最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面向?qū)ο笾^承性的實(shí)例代碼詳解

 更新時(shí)間:2020年05月29日 16:27:24   作者:亞努人  
這篇文章主要介紹了Java面向?qū)ο笾^承性,文中代碼簡(jiǎn)單易懂,可以更好的幫助大家學(xué)習(xí),有興趣的小伙伴快來了解下

一、類的繼承

A類繼承B類,是指A類可以擁有B類的非私有屬性和方法,同時(shí)A類也可以自己定義屬性方法或重寫方法以擴(kuò)充自己的功能。

1.1 方法的重寫

重寫方法時(shí),方法的方法名、返回值類型和參數(shù)個(gè)數(shù)及類型均需一致。
首先定義父類Animal,包含年齡、名字兩個(gè)屬性及吃的方法。

public class Animal {
 int age;
 String name;
 public void eat(){
  System.out.println("動(dòng)物可以吃東西");
 }
}

通過子類Dog繼承父類Animal,并重寫eat方法,在調(diào)用重寫的eat方法之前,設(shè)置繼承來的年齡屬性值為10。

public class Dog extends Animal{
 public void eat(){
  System.out.println(age+"歲的狗狗可以吃東西");
 }
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  dog1.age = 10;
  dog1.eat();//10歲的狗狗可以吃東西
 }
}

1.2 繼承的初始化順序

初始化即執(zhí)行類的構(gòu)造方法,在Java中,繼承的初始化順序如下:

父類的屬性 > 父類的構(gòu)造方法 > 子類的屬性 > 子類的構(gòu)造方法

public class Animal {
 int age = 10;
 public Animal(){
  System.out.println("父類Animal執(zhí)行了");
  age = 20;
 }
}
public class Dog extends Animal{
 public Dog(){
  System.out.println("子類Dog執(zhí)行了");
 }
 public static void main(String[] args) {
  Animal a = new Animal();
  System.out.println(a.age);
  Dog dog1 = new Dog();
 }
}

運(yùn)行結(jié)果如下圖所示:

當(dāng)使用final關(guān)鍵字后,變量就成了常量,值不能被改變;方法也不能被繼承使用。

二、this與super

2.1 this關(guān)鍵字

this關(guān)鍵字代表當(dāng)前對(duì)象,this.屬性代表操作當(dāng)前對(duì)象的屬性,this.方法代表調(diào)用當(dāng)前對(duì)象的方法。

2.2 super關(guān)鍵字

super在對(duì)象內(nèi)部使用,代表父類對(duì)象。如果要調(diào)用父類的屬性age,使用super.age;如果要調(diào)用父類的方法eat(),使用super.eat()。如下代碼所示:

public class Dog extends Animal{
 int age = 20;
 public void eat(){
  System.out.println(age+"歲的狗狗可以吃東西");
 }
 public Dog(){
  System.out.println("子類Dog執(zhí)行了");
 }
 public void method(){
  super.eat();
 }
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  dog1.method();//動(dòng)物可以吃東西
 }
}

子類構(gòu)造的過程當(dāng)中,必須調(diào)用其父類的構(gòu)造方法。在子類的構(gòu)造方法第一句隱式的寫了一句super();。

public class Dog extends Animal{
 int age = 20;
 public Dog(){
  super();//寫與不寫都一樣,系統(tǒng)隱式調(diào)用
  System.out.println("子類Dog執(zhí)行了");
 }
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  //父類Animal執(zhí)行了
  //子類Dog執(zhí)行了
 }
}

如果子類的構(gòu)造方法中沒有顯示的調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無參的構(gòu)造方法。如果顯示的調(diào)用構(gòu)造方法,必須在構(gòu)造方法的第一行。

所以,如果子類的構(gòu)造方法中既沒有顯示的調(diào)用父類的構(gòu)造方法,而父類又沒有無參的構(gòu)造方法,則編譯出錯(cuò)。

三、Object類

Object類是所有類的父類,默認(rèn)被所有類繼承。

3.1 toString()

toString()方法返回對(duì)象的地址(即Hash碼),如果要查看對(duì)象的屬性及屬性值,則可以重寫toString()方法(通過eclipse菜單中source可自動(dòng)生成)。

public class Dog extends Animal{
 int age = 20;
 @Override
 public String toString() {
  return "Dog [age=" + age + "]";
 }
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  System.out.println(dog1.toString());//未重寫方法前的結(jié)果:Dog@15db9742
  System.out.println(dog1.toString());//Dog [age=20]
 }
}

3.2 equals()

equals()方法比較的是兩個(gè)對(duì)象的引用是否指向同一塊內(nèi)存地址。

public class Dog extends Animal{
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  Dog dog2 = new Dog();
  if(dog1.equals(dog2)){
   System.out.println("兩個(gè)對(duì)象相同");
  }else{
   System.out.println("兩個(gè)對(duì)象不同");
  }
 }
}

輸出的結(jié)果是“兩個(gè)對(duì)象不同”。如果僅需判斷兩個(gè)對(duì)象的屬性值是否相等,可以通過eclipse重寫equals方法。如下代碼所示:

public class Dog extends Animal{
 @Override
 public boolean equals(Object obj) {
  if (this == obj) //如果參數(shù)對(duì)象和當(dāng)前對(duì)象相同,則一定相同
   return true;
  if (obj == null) //如果參數(shù)對(duì)象為空,則一定不同
   return false;
  if (getClass() != obj.getClass())//如果參數(shù)對(duì)象的類對(duì)象和當(dāng)前對(duì)象的類對(duì)象不相等,則不相同
   return false;
  Dog other = (Dog) obj;//將參數(shù)進(jìn)行強(qiáng)制轉(zhuǎn)換
  if (age != other.age) //若屬性值相等,則相同
   return false;
  return true;
 }
 public static void main(String[] args) {
  Dog dog1 = new Dog();
  dog1.age = 15;
  Dog dog2 = new Dog();
  dog2.age = 15;
  if(dog1.equals(dog2)){
   System.out.println("兩個(gè)對(duì)象相同");
  }else{
   System.out.println("兩個(gè)對(duì)象不同");
  }
 }
}

最后輸出結(jié)果是,兩個(gè)對(duì)象相同。

注:文章根據(jù)本站相關(guān)課程的學(xué)習(xí)筆記整理而來,有錯(cuò)誤或其他任何問題敬請(qǐng)指正,歡迎共同學(xué)習(xí)交流!

以上就是詳解Java面向?qū)ο笾^承性的詳細(xì)內(nèi)容,更多關(guān)于Java 面向?qū)ο罄^承性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化

    如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化

    對(duì)于二次開發(fā)來說,很大一部分就找找文件和找數(shù)據(jù)庫(kù)的變化情況,下面這篇文章主要給大家介紹了關(guān)于如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • java導(dǎo)出生成csv文件的方法

    java導(dǎo)出生成csv文件的方法

    這篇文章主要為大家詳細(xì)介紹了java導(dǎo)出生成csv文件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java的方法和this關(guān)鍵字如何理解與應(yīng)用

    Java的方法和this關(guān)鍵字如何理解與應(yīng)用

    Java語(yǔ)言中的“方法”(Method)在其他語(yǔ)言當(dāng)中也可能被稱為“函數(shù)”(Function)。對(duì)于一些復(fù)雜的代碼邏輯,如果希望重復(fù)使用這些代碼,并且做到“隨時(shí)任意使用”,那么就可以將這些代碼放在一個(gè)大括號(hào){}當(dāng)中,并且起一個(gè)名字。使用代碼的時(shí)候,直接找到名字調(diào)用即可
    2021-10-10
  • Java enum關(guān)鍵字不識(shí)別的快速解決辦法

    Java enum關(guān)鍵字不識(shí)別的快速解決辦法

    這篇文章主要介紹了Java enum關(guān)鍵字不識(shí)別的快速解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之線索化二叉樹的實(shí)現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之線索化二叉樹的實(shí)現(xiàn)

    在二叉樹的結(jié)點(diǎn)上加上線索的二叉樹稱為線索二叉樹,對(duì)二叉樹以某種遍歷方式進(jìn)行遍歷,使其變?yōu)榫€索二叉樹的過程稱為對(duì)二叉樹進(jìn)行線索化。本文將詳解如何實(shí)現(xiàn)線索化二叉樹,需要的可以參考一下
    2022-05-05
  • ThreadLocal內(nèi)存泄漏常見要點(diǎn)解析

    ThreadLocal內(nèi)存泄漏常見要點(diǎn)解析

    這篇文章主要介紹了ThreadLocal內(nèi)存泄漏常見要點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java文件下載ZIP報(bào)錯(cuò):Out of Memory的問題排查

    Java文件下載ZIP報(bào)錯(cuò):Out of Memory的問題排查

    本文主要介紹了Java項(xiàng)目中下載大文件(超過2G的ZIP文件)時(shí)出現(xiàn)內(nèi)存溢出(OutOfMemory:JavaHeapSpace)的問題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • 通過Java修改游戲存檔的實(shí)現(xiàn)思路

    通過Java修改游戲存檔的實(shí)現(xiàn)思路

    這篇文章主要介紹了通過Java修改游戲存檔的實(shí)現(xiàn)思路,實(shí)現(xiàn)方法也很簡(jiǎn)單,因?yàn)橹参锎髴?zhàn)僵尸游戲的數(shù)據(jù)文件存儲(chǔ)在本地的存儲(chǔ)位置是已知的,因此我們可以將實(shí)現(xiàn)過程拆分為三個(gè)步驟,需要的朋友可以參考下
    2021-10-10
  • Java使用枚舉替代if/else和switch-case語(yǔ)句的實(shí)踐

    Java使用枚舉替代if/else和switch-case語(yǔ)句的實(shí)踐

    在軟件開發(fā)中if-else和switch-case語(yǔ)句經(jīng)常被用來處理不同的條件分支,但在大型項(xiàng)目中,這種做法可能導(dǎo)致代碼可讀性差、維護(hù)困難,這篇文章主要給大家介紹了關(guān)于Java使用枚舉替代if/else和switch-case語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • springboot Rabbit MQ topic 配置文件綁定隊(duì)列和交換機(jī)的實(shí)現(xiàn)方法

    springboot Rabbit MQ topic 配置文件綁定隊(duì)列和交換機(jī)的

    本文詳細(xì)講解了在SpringBoot中使用RabbitMQ進(jìn)行隊(duì)列與交換機(jī)的綁定方法,包括創(chuàng)建交換機(jī)、隊(duì)列和綁定它們的步驟,以及如何發(fā)送和接收消息,適用于開發(fā)高并發(fā)系統(tǒng),如秒殺系統(tǒng)等
    2024-09-09

最新評(píng)論

伊宁市| 甘孜县| 凯里市| 家居| 镇平县| 彰化县| 来凤县| 保康县| 监利县| 焉耆| 嘉黎县| 绥宁县| 公安县| 江阴市| 南郑县| 荥阳市| 静安区| 建始县| 屏东县| 徐州市| 改则县| 峨山| 梅州市| 三明市| 大冶市| 宜宾县| 辉南县| 怀化市| 云阳县| 英吉沙县| 筠连县| 南部县| 潜山县| 曲阜市| 永平县| 喀喇| 天水市| 桐城市| 天台县| 萍乡市| 商丘市|