1 继承性的理解
子类继承父类的 属性 方法 (包括父类的 私有属性、方法,,但是没有使用权!!!!!)
2 调试程序
---->syso语句
---->debug 设置断点
3 重写 override
4 super关键字
属性是不能被覆盖的
构造器中 super 和 this不能同时用
在构造器的首行 没有显示的声明 this 或者 super 则默认调用的是 super()
5 子类对象实例化的全过程
6 多态性
多态的使用:虚拟方法调用,编译时看父类 运行时看子类—动态绑定
父类的引用指向子类的对象
java Person p = new Man(); p.eat();
/当调用子父类同名同参数的方法时,调用的是子类重写的方法
不能调用子类特有的方法, 只能调父类声明的方法!!!!
一定要涉及重写 否则就不是多态性了
---->为什么要用多态性
不太清楚
---->多态性只用于方法 不适用于属性
---->多态是一种运行时行为
7 虚拟方法调用
子父类有同名同参数方法 在多态情况下 ,父类的方法称为虚拟方法
动态绑定
注:多态性中,内存中实际加载了子类特有的属性和方法,但是由于变量声明为父类对象,导致编译时,只能调用父类的属性方法
8 向下转型
多态性中,想要调用子类特有的方法
a nstanceof A 判断a是否时A的一个实例 否则会报ClassCastException异常
---->Person p = new Man();
If(p instanceof Man) Man man = (Man)p;
9 Object类的使用
---->clone()
---->equals()
---->fonalize() 垃圾回收 系统自己调 不能自己主动调
final、finally、finalize的区别?
10 == 和 equals的区别
----> ==
用于基本数据类型变量 / 引用数据类型变量
基本数据类型:比较值 / 应该考虑到自动类型提升!!
int a = 10; double b = 10.0 char c = 10; a == b; a == c;
引用数据类型: 比较地址值;
注:== 左右两侧需要类型一致 否则编译不通过
----> equals(Object obj);
只用在引用数据类型
Object中equals()也是==
实际用的时候需要重写
11 toString()
上面的代码中表示 String中重写了toString方法
String Date File中都重写了
12 包装类
Integer / Character
---->自动装箱 / 自动拆箱
Integer in1 = new Integer(12);
int in2 = in1.intValue();
String str = String.valueOf(in2);
int in3 = Integer.parseInt(str);
----> Object o1 = true ? new Integer(1) : new Double(2.0); //自动类型提升
System.out.println(o1); // 1.0
---->
---->
---->
Integer a = new Integer(1);
Integer b = new Integer(1);
System.out.println(a == b); false
Integer m = 1;
Integer n = 1;
System.out.println(m == n); true
Integer x = 128;
Integer y = 128;
System.out.println(x == y); false
-128到127 Integer中定义了一个IntegerCache结构, 定义了Integer[] 保存了-128 127,使用自动装箱 在这个范围内,就可以用这个数组中元素,就不需要在重新造一个类