1、super调用父类中被覆盖的方法。
2、重载主要多发生在同一个类的多个同名方法之间,重写发生在子类和父类的同名方法之间,当然父类方法和子类方法之间也可以发生重载。
3、如果在构造器中使用super,则super限定该该构造器初始化的时该对象从父类继承得到的实例变量,而不是该类自己定义的实例变量。
4、子类不会获得父类的构造器,但子类构造器里可以调用父类构造器的初始化代码。
5、如果某个父类通过this调用了同类中重载的构造器,就会依次执行父类的多个构造器。
6、JAVA引用型变量的两个类型
①编译时类型:由声明该变量时使用的类型决定;
②运行时类型:由实际赋给该变量的类型决定。
当编译时类型与运行时类型不一致时将导致多态。
7、方法具有多态型,对象的实例变量不具有多态性。
8、编写JAVA代码时,引用变量只能调用声明该变量时所用类型包含的方法。如果需要调用运行时类型的方法,则需要强制类型转换。
9、引用类型的强制类型转换只能在具有继承关系的两个类型之间进行。
10、如果试图把一个父类实例转化成子类实例,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,运行时类型为子类类型)
11、当把一个子类赋给父类总是可以成功的,把父类赋给子类需要进行强制类型转换,而且可能出现异常。
12、instanceof
用于判断前面对象是否是后面类或其子类实现类的实例。
13、为保证封装性父类设计遵循的三个规则;
①尽量隐藏父类的内部数据;尽量把父类的所有成员变量都设置成private类型的。
②父类中仅为辅助其他的工具方法设置为private;若父类中的方法需要被外部类调用则必须以public修饰,但又不希望子类重写该方法,用final修饰;希望被子类重写,但不希望被其他类调用用protected修饰。
③尽量不要在父类构造器中使用被子类重写的方法。
14、何时使用继承?
①子类需要增加属性,而不仅仅是属性值的改变
②子类需要增加自己独有的行为方式
15、如果两个类之间有明显的整体与部分关系则用组合。继承是is-a关系 组合式has-a关系。
16、初始化块
如果两个构造器中有相同的初始化代码,且这些初始化代码无需接收参数就可以把他们放在初始化块中定义。
17、静态初始化块
对类进行初始化,不能对实例变量进行初始化。