Java方法覆盖

什么时候使用"方法覆盖"?
子类继承父类之后,当继承过来的方法无法满足当前子类的业务需求时,子类有权利对这个方法进行重新编写,有必要进行"方法的覆盖"。

当子类对父类继承过来的方法进行"方法覆盖"之后,子类对象调用该方法的时候,一定执行覆盖之后的方法。

怎样构成方法覆盖?

  • 条件一:两个类必须要有继承关系。

  • 条件二:重写之后的方法和之前的方法具有:
    相同的返回值类型、
    相同的方法名
    相同的形式参数列表。

  • 条件三:访问权限不能更低,可以更高。(这个先记住。) 条件四:重写之后的方法不能比之前的方法抛出更多的异常,可以更少。(这个先记住

注意1:方法覆盖只是针对于方法,和属性无关。
注意2:私有方法无法覆盖。
注意3:构造方法不能被继承,所以构造方法也不能被覆盖。
注意4:,方法覆盖只是针对于实例方法,静态方法覆盖没有意义。

覆盖to String方法:

关于object类中的tostring ()方法

1.toString ()方法的作用是什么?
含义:调用一个java对象的tostring()方法就可以将该java对象转换成字符串的表示
2.toString ()方法的作用是什么?
将“java对象"转换成"字符串的形式”。
3.object类中tostring ()方法的默认实现是什么?
public string tostring (){
return get…()+ @+Integer.toHexstring ( hashcode ( ) );
}

当输出一个引用的时候,println方法会自动调用引用的tostring方法

public class Account {
    public static void main(String args[]) {
        Time t=new Time(2000,9,17);
        System.out.println(t);//输出t对象,自动调用toString方法
    }
}
class Time{
    private int year;
    private int month;
    private int day;
    public  Time(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public void year(int year){
        this.year=year;
    }
    public int year(){
        return year;
    }
    public void month(int month){
        this.month=month;
    }
    public int month(){
        return month;
    }
    public void day(int day){
        this.day=day;
    }
    public int day(){
        return day;
    }
    public String toString(){//对toString方法覆盖(重写)
        return year+"年,"+month+"月,"+day+"日";
    }
}

扩展:

  1. 静态方法不谈方法覆盖: 方法覆盖和多态有着必然的联系,静态方法的执行不需要对象,即不存在方法覆盖
  2. 私有方法不能方法覆盖: 在外部类五法访问私有的,即无法进行方法覆盖
  3. 构造方法不能方法覆盖: 构造方法不能被继承,即无法实现方法覆盖
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值