Java中的重载、覆盖和隐藏
2013-12-19 09:57
162 查看
Java中的重载、覆盖和隐藏
转载▼
重载(overload):发生在一个类的内部,而且是针对方法而不是域而言。若方法的签名相同,但参数的个数或者参数的类型不同,则构成了重载。但返回类型不在考虑范围之内,也就是说,如果仅仅是返回类型不同,则构不成重载。
覆盖(override):发生在父类和子类之间,而且是针对实例方法(即非静态方法)而不是域而言。构成覆盖要满足以下条件:
1、父类中的static方法不可以被覆盖;
2、父类中的final方法不可以被覆盖;
3、方法的签名、参数个数以及参数类型都要相同;
对于返回类型要说明两点:
1)如果返回类型是引用类型,则覆盖方法的返回类型可以声明为父类方法声明的返回类型的子类型;
2)如果返回类型是基本类型,则覆盖方法的返回类型必须和父类方法的返回类型相同;
对于方法参数的说明:不管父类方法中的参数是否是final的,子类都可以修改这个参数;
4、子类方法的访问权限要大于等于父类的访问权限;
5、子类方法可以改变某些方法修饰符,如:synchronized、native和strictfp。
6、子类方法的throws子句可以和父类方法不同,它列出的每一个异常类型都应该和父类中的异常类型相同或者是父类异常类型的子类;
隐藏(hidden):发生在父类与子类之间,而且只是针对静态方法和域。说明:被声明为final的类方法不可以被隐藏。
实例方法被子类的方法覆盖时,实际被调用的方法是在执行时决定的。
类方法被子类的方法隐藏时,实际被调用的方法是在编译时决定的。
相关文章推荐
- Java和C++中的重载,覆盖,隐藏区别
- java的重载、覆盖和隐藏的区别
- **C++和JAVA中的多态区别以及与此相关的重载、覆盖和隐藏*
- java方法的重载、覆盖和隐藏
- JAVA求不惑之 重载 覆盖 隐藏
- java的重载、覆盖、隐藏
- java方法的重载、覆盖和隐藏,以及多态的区别
- java中重载,覆盖和隐藏的区别
- java基础01 从Java的继承谈 重载、重写(覆盖)、隐藏
- java的重载、覆盖和隐藏的区别
- C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
- java中重载、覆盖和隐藏三者的区别分析
- java方法的重载、覆盖和隐藏,以及多态的区别
- Java覆盖、重载、隐藏相关知识
- 重载、重写(覆盖)、隐藏的区别--Java
- Java与C++继承中的重载,覆盖和隐藏
- Java和C++中的重载,覆盖,隐藏
- java总的重载(overload)、重写或覆盖(override)和隐藏分析;
- Java重载、覆盖、多态、隐藏的区别与联系
- 谈谈Java继承中的重载,覆盖和隐藏