Override

原创 2013年12月01日 23:30:07

很实用的总结

1:方法的重写要遵循“三同一小一大”的规则。其中
 “三同”即方法名相同,形参列表相同,返回值类型相同;
 “一小”指的是子类方法声明抛出的异常类一个比父类方法声明抛出的异常类更小或相等;
 “一大”指的是子类方法的访问权限应比父类方法更大或相等。

 

2:重写方法和被重写的方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。否则,将引发编译错误。

由于子类不能继承父类的构造方法,因此子类不能重写父类的构造方法。

 

3:如果父类方法具有private访问权限,则该方法对其子类是隐蔽的,因此其子类无法访问该方法,也就无法重写该方法。
这时,即便子类中定义了一个与父类private方法具有相同名称、相同的形参类表、相同的返回值类型的方法,依然不是重写,而只是在子类中重新定义了一个新方法。

(对于抽象方法,如果使用了private,即private abstract className() ;则会报“非法的修饰符组合: abstract和private”的错误。因为private权限不允许子类重写该方法,但抽象方法必须被子类重写,故会出错 )


因此,以下代码是完全正确的:
class Baseclass {
 //test方法是private 访问权限,子类不可以访问改方法
 private void test() {...}
}

class Subclass {
 //此处不是方法的重写,所以可以增加static关键字,当然去掉关键字static也是正确的
 public static void test() {...}
}

 

4:<1>如果子类定义了和父类同名的attribute,也会发生子类attribute覆盖父类attribute的情形。正常情况下,子类中定义的方法直接访问该attribute时只会访问到覆盖的
       attribute,而无法访问到父类被覆盖的attribute;但在子类定义的实例方法中可以通过super来访问父类被覆盖的attribute。
   <2>:如果被覆盖的是类attribute,在子类的方法中则可以通过父类名来调用访问被覆盖的类attribute。
  【3】:如果子类里没有包含和父类同名的attribute,则子类直接继承到父类得分attribute。如果子类在实例方法中访问该属性,则无须显式使用super或父类名作为调者。

【因此】:
         如果在某个方法中访问名为 a 的attribute,但没有显式指定调用者,则系统查找 a 的【顺序】如下:
  (1)查找该方法中是否有名为 a 的局部变量。
  (2)查找当前类中是否包含名为 a 的attribute。
  (3)查找a的直接父类中是否包含a的attribute,依次上溯 a 的父类,直到java.lang.Object类,如果最终不能找到名为 a 的attribute,则系统出现编译错误。

 

 

 

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c# override new base 关系

  • 2011年03月29日 10:43
  • 78KB
  • 下载

overload and override

  • 2011年12月08日 17:18
  • 37KB
  • 下载

提高你的Java代码质量吧:注意@ Override不同版本的区别

一、分析  @Override注解用于方法的覆写上,它在编译期有效,也就是Java编译器在编译时会根据该注解检查是否真的是覆写,如果不是就报错,拒绝编译。  该注解很大程度解决我们的误写问...

ext js 4.1apply &amp;&amp; override

  • 2012年05月21日 15:19
  • 1KB
  • 下载

override

  • 2011年05月18日 22:50
  • 332KB
  • 下载

【Stackoverflow好问题】重写(Override)equlas和hashCode方法时应考虑的问题

问题 重写(Override)equlas和hashCode方法时应考虑哪些问题? 精华回答 理论上讲(偏程序语言和数学层面) equals() 定义了对象的相等关系(自反性、对称性、传...

Lua 类的继承与函数override

  • 2015年11月04日 00:46
  • 49KB
  • 下载

java 静态方法不能被override

先上代码,看结果分析:  父类:class Base { public static int a = 10; public int b = 20; static { System.out.p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Override
举报原因:
原因补充:

(最多只允许输入30个字)