亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

你不知道的Java重寫

標簽:
Java

我猜这个知识点你可能会弄错。

重写:两个方法有相同的名称和相同的参数,其中一个方法位于子类,另一个方法位于这个子类的父类中。重写让子类可以在父类的基础上实现跟你更多的功能,或者实现自己的功能。

多说两句,重写是针对方法的,针对成员变量的重写有试过吗?

案例

看一下下面的代码,猜一下运行的结果是什么。

class Super {
    String s = "老";

    public String bark(){
        return s;
    }
}

class Sub extends Super {
    String s = "儿子";

    @Override
    public String bark() {
        return s;
    }
}

public class FieldOverriding {
    public static void main(String[] args) {
        Sub c1 = new Sub();
        System.out.println(c1.s);
        System.out.println(c1.bark());

        Super c2 = new Sub();
        System.out.println(c2.s);
        System.out.println(c2.bark());
    }
}

定义:在一个类中,成员变量的名称和父类相同的时候会隐藏父类的成员比那里,尽管类型不同。在子类中,父类的成员变量不能通过变量名字来引用。只能,通过它的父类来访问。
最后:我们不建议这么做,这样会让代码阅读变得困难。

运行结果:

儿子      // c1.s
儿子      // c1.bark()
老      // c2.s
儿子      // c2.bark

分析

c1和c2是相同的对象,也就是相同的class,但是c2.s为父类的内容,意味着父类和子类的成员变量都是存在的。
我们也可以这样访问:

((Super) c2).s      //注意这里的Super不是Java的关键字。

额外

重写和重载都会放在一起呗提到,初学者也经常弄混淆两者的概念。

重载:两个或更多个有相同的名称,但是有不同的参数。(参数个数不同,参数类型不同),与方法的返回值无关,与权限修饰符无关。类型,个数,顺序

最后

这个概念在Java的官方文档中有提到,想把Java搞明白,还是要阅读官方文档,最一手的资料。
有没有觉得这个知识点很偏呢...

参考:

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
1.1萬
獲贊與收藏
1545

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消