由于近期需要用到基础以及底层的一些知识点,所以借此机会找来了一些学习的资料,用于对 JAVA
面向对象相关的知识点进行复盘、巩固,并且在此将一些重点的知识点做相关的记录,在后续的实际开发工作中遇到这些知识点相关的内容都会在本篇笔记中进行记录、迭代。
“ 温故而知新 ”
对于 “面向对象” 章节的学习,划分为以下三个阶段
Java
类及类的成员:属性、方法、构造器:代码块、内部类this
、super
、static
、final
、abstract
、interface
、package
、import
等核心:掌握上述的概念、思想、关键字等如何在代码中进行具体实现与应用。
技巧:“大处着眼,小处着手”
具体涉及到的代码的需要特别细致的去写,否则一不小心就会出错,导致花费大量的时间去排错, 但也不能埋头去写,要关注前面以及后续的需要学习的一些知识点,区分哪些是重要的,哪些是不重要的,且如果遇到一些 "问题" 时,先花一些时间去考量这个问题的价值,如果需要花费大量的时间去完成,而到最后却不怎么用得上的话,那大可不必。
总结:抓重点去学习,将自己的时间和精力的价值最大化。
查阅资料的过程中发现的重点
完善中
面向过程(POP
)与面向对象的区别(OOP
)
两者都是一种编程思想,面向对象是由面向过程延伸而来的。
面向对象更加强调运用人类在日常生活中的思维逻辑所采用的思想方法以及原则,如抽象、分类、继承、聚合、多态等。
聚合: 多态:
面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。
面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做,以下面的伪代码来举例
人{
打开(冰箱){
冰箱.开开();
}
抬起(大象){
大象.进入(冰箱);
}
关闭(冰箱){
冰箱.闭合();
}
}
//实体对象
冰箱{
//对象拥有的功能
开开(){}
闭合(){}
}
大象{
进入(冰箱){}
}
在 Java
语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化来使用类的具体功能。
Scanner
、String
、File
等涉及到 Java
语言与前端提交的数据或者后端的数据库交互时,在 Java
层面都体现为类、对象,例如在数据库中的每一个表都被看作为一个个的类,而每个表里面的字段都是这个类的属性。
引用类型的变量,只可能储存两类值:
null
例如,直接打印一个实例化后对象的值
Phone p = new Phone();
System.out.println(p)
得到的结果为
下图为对象数组在 JVM
的栈和堆中的内存的解析图
图片来源自宋红康老师课程的课件
创建两个匿名的对象,他们的内存空间是独立的,运行结束后地址会在内存中销毁(适合一次性使用的场景,无需在栈中储存该对象的内存地址)
new Phone().price = 1999;
new Phone().getPrice(); //0.0
匿名对象的使用
public class InstanceTest {
public static void main(String[] args) {
PhoneMall mall = new PhoneMall();
//匿名对象的使用
mall.show(new Phone());
}
}
class PhoneMall{
public void show(Phone phone){
//匿名对象通过形参的赋值,实现在方法中被多次调用
phone.sendEmail();
phone.playGame();
}
}
” 两同一不同 “
判断与 void show(int a,char b,double c){}
构成重载的有哪些?
void show(int x,char y,double z){} // no,参数的数量和类型相同
int show(int a,double c,char b){} // yes
void show(int a,double c,char b){} // yes
boolean show(int c,char b){} // yes
void show(double c){} // yes
double show(int x,char y,double z){} // 参数的数量和类型相同
void shows(){double c} // no ,方法名不同
总结:方法的重载需要重点关注相同方法名的参数的数量以及参数的类型
jdk 5.0 中新增的内容
使用过程中需要注意的:
public class MethodArgsTest {
public static void main(String[] args) {
MethodArgsTest test = new MethodArgsTest();
test.show(new String[]{"AA","BB","CC"});
// 可变形参也可以接收一个数组
test.show(new String[]{"AA","BB","CC"});
}
public void show(String ... strs){
for(int i = 0;i < strs.length;i++){
System.out.println(strs[i]);
}
}
}
形参:方法定义时,声明在小括号内的参数
实参:方法调用时,实际传递给形参的数据
int
、float
、double
等)此时实参赋给形参的是真是储存的数据值。
完善中
完善中
完善中
记录在学习过程中受到的一些启发
“比较少的人是真的把知识读通了,把知识是为他所用,而有一部分的人是学得越多越陷入进了知识的深渊,最终没办法走出来。”
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有