java中子类覆盖父类方法所必须满足的条件
来源:互联网 发布:淘宝买手机华强北发货 编辑:程序博客网 时间:2024/04/29 20:52
- package tong.yue.day4_264;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import javax.swing.JButton;
- import javax.swing.JComponent;
- /**
- * 子类重写(覆盖)父类的方法必须满足的条件:
- * 1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法),
- * 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。
- * 2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。
- * 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法。
- * 3.子类和父类的方法必须要具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型(jdk1.5之后)。
- * 如果方法名称相同而参数列表不同(返回类型可以相同也可以不同),那么只是方法的重载,而非重写。
- * 如果方法名称和参数列表相同,返回值类型不同,子类返回值类型也不是父类返回值类型的子类,编译器就会报错。
- * 4.子类方法的访问权限不能小于父类方法的访问权限(可以具有相同的访问权限或者子类的访问权限大于父类)
- * 访问权限由高到低:public、protected、包访问权限、private。如果子类方法的访问权限低于父类,则编译器会给出错误信息
- * 5.子类方法不能比父类方法抛出更多的编译时异常(不是运行时异常),即子类方法抛出的编译时异常或者和父类相同或者是父类异常的子类。
- * @author tong
- *
- */
- public class Inheritance {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
- }
- class Pareant {
- public void doSomething() {
- }
- public static void doSomething1() {
- }
- public JComponent doSomething2() {
- return null;
- }
- public JComponent doSomething3() {
- return null;
- }
- public void doSomething4(int x) {
- }
- public void doSomething5() throws FileNotFoundException{
- }
- private void doSomething6(int x) {
- }
- }
- class Sub extends Pareant {
- //父类中该方法是私有的,对子类不可见,所以子类无法继承和覆盖父类的私有方法
- //在这里并没有覆盖父类的私有方法,而是在子类中创建了一个新的和父类同名的方法而已,这两个方法没有任何关系
- private void doSomething6(int x) {
- }
- // 报错,父类为实例方法,子类为静态方法
- //This static method cannot hide the instance method from Pareant
- public static void doSomething() {
- }
- // 报错,父类为静态方法,子类为实例方法
- //This static method cannot hide the instance method from Pareant
- public void doSomething1() {
- }
- // 正确,父类的返回值为JComponent,是子类返回值类的父类,从jdk1.5开始,重写父类方法时的返回值可以与父类相同,也可以是父类的子类
- public JButton doSomething2() {
- return null;
- }
- // 报错,父类的返回值为JComponent,子类返回值类型为int,子类返回值与父类返回值类型不同,也不是父类返回值的子类
- //The return type is incompatible with Pareant.doSomething3()
- public int doSomething3() {
- return 1;
- }
- //报错,父类的访问权限为public,子类为protected,子类的访问权限不能低于父类,可以高于或者等于父类的访问权限
- //Cannot reduce the visibility of the inherited method from Pareant
- protected void doSomething4(int x) {
- }
- //报错,子类不能抛出比父类更多的异常,父类抛出FileNotFoundException异常,子类抛出的IOException是父类异常的父类
- //子类只能抛出和父类一样的异常,或者是父类异常的子类,而不能超过父类
- //Exception IOException is not compatible with throws clause in Pareant.doSomething5()
- public void doSomething5() throws IOException{
- }
- }
0 0
- java中子类覆盖父类方法所必须满足的条件
- java中子类覆盖父类方法所必须满足的条件
- java基础学习之——子类重写(覆盖)父类的方法必须满足的条件
- 继承中子类重写父类方法必须满足条件
- 方法覆盖和方法重载必须满足的条件
- Java重载方法必须满足条件
- 方法覆盖必须满足的规则
- java 子类可以继承父类中的什么,子类中方法覆盖,final关键字的含义
- JAVA子类方法覆盖父类方法
- 有关java中子类覆盖父类的方法的返回值的问题
- Java子类与父类方法的隐藏和覆盖
- 为什么java的子类中必须调用父类的构造方法
- 错误记录--Java中子类继承父类必须调用父类的构造方法?
- 子类覆盖父类的方法
- Java子类父类属性的覆盖
- Java子类父类属性的覆盖
- Java子类覆盖父类的规则
- java中equals()的满足条件
- uniDAC的安装和使用
- Robot Framework - Jenkins 的测试报告打不开
- SAP彻底删除物料主数据
- Linux:CentOS安装包+VMware安装包+Linux连接工具(xmanager)+Hadoop安装包+Eclipse Hadoop插件及Eclipse软件+相关工程:
- Opencv基本绘图
- java中子类覆盖父类方法所必须满足的条件
- maven相关知识
- 如何删除oracle归档日志
- 安全测试-数据回传
- 事件溯源(Event Sourcing)
- html中值得注意的一点事
- Java字符串比较(equals)
- 2016.12.13
- 通过AJAX获取ashx后台JSON数据并使用bootstrap-Table控件