1.两同两小一大原则
两同:方法名相同,形参列表相同。
两小:子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常更小或相等。
一大:子类方法的访问权限应比父类方法的访问权限更大或相等。
尤其指出:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。
2.注意方法重写(override)与方法重载(overload)的区别
- 重载主要发生在同一个类的多个同名方法之间。
- 重写发生在子类与父类的同名方法之间。
- 子类中重写的方法的返回值不能大于父类中被重写的方法的返回值类型 (可以关系相同、或者时父类的返回值类型的子类)
- 父类中被重写方法的返回值类型位A类型,则子类中重写方法的返回值类型可以是A类型,也可以是A类型的子类
- 父类中被重写方法的返回值类型为基本类型,则子类中的重写方法的返回值类型必须跟父类方法的返回值类型相同
案例演示
//子类重写方法 访问权限的题型//错误演示 //class person1{ String name ="父"; public void function() {} } class son1 extends person1{ String name ="子"; private void function() {} }
// 子类中重写的方法的返回值不能大于父类中被重写的方法的返回值类型 错误演示 class person1{ String name ="父"; public int function() { return 1; } } class son1 extends person1{ String name ="子"; public Object function() { return ""; } }