1. 关于继承的规则:子类不能继承父类中私有的成员变量和方法
2. 覆盖方法必须和被覆盖方法具有相同的方法名、参数列表和返回值类型,并且不能使用比被覆盖方法更严格的访问限制
3. super:是在子类对象方法中对父类对象的引用
-使用:
1) 在子类对象的方法中引用父类对象的成员
public String getInfo(){
return super.getInfo() + ", info" + info;
}
2) 在子类的构造器中调用父类的构造器
- 可以在子类中通过 super(参数列表) 的方式来调用父类的构造器
- 默认情况下子类的构造器调用父类的无参构造器
public Person(){
super();
}
- 若父类定义了带参数的构造器,则系统将不再为父类提供无参构造器,而子类的构造器中必须调用父类的一个构造器,这时:
① 父类显示的定义一个无参构造器
② 在子类的构造器中显式的调用父类的带参构造器
- 与 this 类似, super(参数列表) 必须放在构造器的第一行,这说明 this(参数列表) 和 super(参数列表) 不能同时出现
4. 多态:同样类型的变量,调用同样的方法 却产生完全不同的行为
- 当父类的变量指向一个子类的对象,调用父类中已经被重写的方法的时候
- 在多态的情况下(当父类的变量指向一个子类的对象),不能调用子类新添加的方法
- 在多态的情况下,可以对对象进行强制类型转换
1) 只有在具有父子关系的情况下才可以进行强制类型转换
2) 父类的对象可以转换为任何子类的类型,但有可能会发生 java.lang.ClassCastException
5. instanceof 操作符:
- x instanceof A 检验 x 是否为类 A 的对象,返回值为 boolean 型。
- 要求 x 所属的类与类 A 必须是子类和父类的关系,否则编译出错
6. Java 的强制类型转换:
- 从子类到父类的类型可以自动进行
- 父类到子类必须强制转换
- 无继承关系的引用类型的转换时非法的
7. equals 与 ==
1) ==
- 引用类型比较引用 (是否指向同一个对象)
- 符号两边的数据类型必须可兼容,否则编译出错
2) equals()
- 只能比较引用类型,其作用与 "==" 相同,比较是否指向同一个对象
- 当用 equals() 方法进行比较时,对类 File、String、Date 及封装类 (Wrapper Class) 来说是比较类型及内容二不考虑引用的是否是同一个对象,因为他们重写了 equals() 方法