Java方法重写总结

方法重写,即方法的重新改写,是为了更准确地描述子类的行为特征

比如

public class Father {
    String name ="jim";
    String address;
    protected int listen(int a,int b) {
        System.out.println("正在用收音机听广播...");
        return 0;
    }
}

 

public class Son extends Father {
    @Override
    protected int listen(int a,int b) {
        System.out.println("正在用手机听广播...");
        return 0;
    }
}

即为子类对父类方法的重写

在重写的方法上加@Override,表示重写

关于重写需要注意几点,若不符合,则错误或者不叫重写

1.方法访问权限

重写后的方法其访问权限必须与父类相同或比父类范围更大

由大到小的排序为:public  protected 默认的(即为空) private

如上面给出的例子

若子类改为

public class Son extends Father {
    @Override
    int listen(int a,int b) {
        System.out.println("正在用手机听广播...");
        return 0;
    }
}

则错误,因为子类重写的方法访问权限比父类小

2.修饰词

a、父类方法前加final修饰,则不可以被重写(会被继承)

public class Father {
    String name ="jim";
    String address;
    protected final int listen(int a,int b) {//加final不能被重写
        System.out.println("正在用收音机听广播...");
        return 0;
    }
}

若将父类方法改变如此,则子类报错。

 

b、父类方法前加static修饰,则不可以被重写(会被继承)

形式同上

c、子类重写方法不可以加static修饰

3.返回值类型

若父类返回值类型为void或基本数据类型,子类重写方法返回值类型必须与父类相同

如开始举例,子类改为任何非int返回值,都是错误的

若父类返回值类型为引用类型,则子类返回值类型必须与父类一致或为父类返回值类型的子类

 

public class Father {
    String name ="jim";
    String address;
    protected Object listen(int a,int b) {
        System.out.println("正在用收音机听广播...");
        return "0";
    }
}
public class Son extends Father {
    @Override
    protected String listen(int a,int b) {//String是Object子类,正确
        System.out.println("正在用手机听广播...");
        return "0";
    }
}

4.方法名必须相同

 

5.参数列表除参数名可以不同,参数个数,类型都必须相同

开始时的子类

public class Son extends Father {
    @Override
    protected int listen(int a,int b) {//(int c,int d)正确;(int a)错误;(long a,int b) 错误
        System.out.println("正在用手机听广播...");
        return 0;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值