1.子类没有权限调用父类中被修饰为private的方法,只能调用父类中public和protected方法。
2.重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变,即private->protected/public protected->public
3.子类重写父类方法时可以修改方法的返回值类型,但是需要遵循一个原则:重写的返回值类型必须是父类中同一方法返回值类型的子类
4.在实例化子类对象时,父类无参构造方法会自动调用,但是有参构造方法并不会自动调用,需要使用super关键字显式调用
5.如果使用finalize()方法对对象进行清理,需要确保子类的finalize()方法最后一个动作是调用父类的finalize()方法
6.Object类中getClass() notify() notify()All() wait()等方法不可以重写,因为这些方法定义为final类型
7.在自定义类中使用equals()方法进行比较时,将默认使用"=="运算符比较两个对象的引用地址,而不是比较对象内容,若要比较对象内容需要在自定义类中重写equals()方法
8.向下转型将抽象类转换为较具体的类,因此通常会发生错误,可以使用显式类型转换将父类对象强制转换为某个子类对象;且向下转型时,如果父类对象不是子类对象的实例,则会发生ClassCastException异常,所以向下转型之前应该使用instanceof操作符判断父类对象是否为子类实例
Animal animal=new Cat(); //先向上转型
if(animal instanceof Cat){
Cat cat=(Cat) animal; //然后向下转型
}