`
braveCS
  • 浏览: 73755 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Java拾遗

 
阅读更多
Override覆盖方法规则
1)子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回值一致
2)子类方法不能缩小父类方法的访问级别。
3)子类方法不能抛出比父类方法更多的异常,子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常类是父类方法抛出的异常类的子类。
4)被覆盖的方法不能为private,否则在其子类只是定义一个新的方法,并不能对其进行覆盖。

方法覆盖和方法重载的相同之处:要求方法同名。不同:
1)方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致
2)方法覆盖要求返回类型必须一致,而方法重载对此不作限制
3)方法覆盖对方法的访问级别和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。

构造函数:不能被static、final和abstract修饰。构造方法不能被子类继承,所以用final和abstract修饰没有意义。构造方法用于初始化一个新建的对象,所以用static修饰没有意义。不过可以有和构造函数同名的方法(不推荐)。

内部类种类
变量——[成员变量——[实例变量|静态变量]|局部变量]
内部类——[成员内部类——[实例内部类|静态内部类]|局部内部类|匿名类]
顶层类只能处于public和默认访问级别,而内部成员类可以处于public、protected、默认和private,局部内部类可见范围是当前方法,不能用访问控制修饰符及static修饰符来修饰。以上来自《java逍遥游》
所有的内部类都可以有static final变量。

[转]抽象方法是否可同时为static,是否同时为native,是否同时为synchronized?
1)static方法只能被子类里面static的方法所覆盖,不能表现出多态,因为多态性是通过引用来实现的,所以abstract和static不可以同时使用。
2)native的方法时通过引入C/C++或其他本地语言来实现的,而在static块或方法里,无法引入不同的实现,所以不能同时使用abstract和native。
3)synchronized和abstract也不能混合使用,因为synchronized同步的是同一对象,而不是不同实现的不同对象。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics