方法的继承与属性的继承有很大的不同,属性任何继承方式均可,而方法则有各种限制,于是在这里做了一个简单的总结:
1、修饰符相同的方法覆盖,即只改内部,不改外部
2、访问权限不同的方法覆盖,子类只能相对父类越来越宽松,例如父类是public,子类就不能是缺省或protect,private
3、返回值的类型覆盖,只允许相容的返回类型,例如不能将返回值为int型改为double型,但是复合类型则例外
4、final的方法覆盖,只能是父类无,子类有,而不能是父类有,子类无
5、static(静态)的方法覆盖不能有任何变动,即父类有,子类必须有,父类无,子类也必须无
实例如下:
父类:
package ExtendMethod; public class CommonMethod { protected int x=100; public int getX() {//定义一个普通返回值的实例方法 return x; } public CommonMethod getObject() {//定义一个返回复合类型的方法 return new CommonMethod(); } public final void setX(int ix) { x=ix; } protected void proShowMsg() {//定义一个具有保护权限的方法 System.out.println("this is protected ShowMsg() in Common class"); } public void pubShowMsg() {//定义一个具有公共访问权限的方法 System.out.println("this is public showMsg() in Common class"); } static public void stShowMsg() {//定义一个静态方法 System.out.println("this is static showMsg() in Common class"); } }