Java 第10天 面向對象(下)多態

寫在前言 : 學習資源B站是最好的也是很全面。
1 、現在出去面試,面試官老是會問你一句話Java 怎麼樣?
不管是大數據崗位還是數據庫都會問一句。 回來痛下決心,決定探索下這門語言的精髓,大數據很多框架也都是Java 寫的,的確懂一門語言,比較穩妥。路也寬敞!!!不然就和喫飯沒筷子,那麼尷尬。把每天學習到的 Java知識分享到這裏會。直到能自己寫個複雜一點Dome得出來。
2、爲了監督自己探索這門語言的動力與決心。特此這段話放到前面!!!
3、挑戰下自己 到底是笨 還是學不會,還是不想學。 好運

一、什麼是多態

多態性是面向對象編程的又一個重要特徵,它是指在父類中定義的屬性和方法被子類繼承之後,可以具有不同的數據類型或表現出不同的行爲,這使得同一個屬性或方法在父類及其各個子類中具有不同的含義。

對面向對象來說,多態分爲編譯時多態和運行時多態。其中編譯時多態是靜態的,主要是指方法的重載,它是根據參數列表的不同來區分不同的方法。通過編譯之後會變成兩個不同的方法,在運行時談不上多態。而運行時多態是動態的,它是通過動態綁定來實現的,也就是大家通常所說的多態性。

多態性:可以理解爲一個事物的多種形態。

1、何爲多態性:
對象的多態性:父類引用指向子類對象(或子類的對象賦給父類的引用)

Person p1 = new Man();

2、多態的使用:
虛擬方法的調用
有了對象的多態性以後,我們在編譯期,只能調用父類中聲明的方法,但在運行期,我們實際執行的子類重寫父類的方法。
總結:編譯,看左邊;運行看右邊。

3、多態的使用前提:
①類的繼承關係
②方法的重寫

4、多態要有自父類的繼承關係。
5、多態性適用於方法、不適用於屬性!!!


二、多態實現的條件

Java 實現多態有 3 個必要條件:繼承、重寫和向上轉型。
只有滿足這 3 個條件,開發人員才能夠在同一個繼承結構中使用統一的邏輯實現代碼處理不同的對象,從而執行不同的行爲。

  • 繼承:在多態中必須存在有繼承關係的子類和父類。
  • 重寫:子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。
    向上轉型:在多態中需要將子類的引用賦給父類對象,只有這樣該引用才既能可以調用父類的方法,又能調用子類的方法。

三、舉例

<眼看千遍,不如手工一遍。>

package Work_ZQ2;

/**

  • 多態性的使用舉例:
    */
    public class AnimalTest {
    public static void main(String[] args) {
    AnimalTest a = new AnimalTest();
    a.func(new dog());
    a.func(new cat());

    }
    public void func(Animal animal){
    animal.eat();
    animal.shout();
    }
    }

class Animal{
public void eat(){
System.out.println(“動物:喫”);
}
public void shout(){
System.out.println(“動物:叫”);
}
}
// 重寫了父類的方法
class dog extends Animal{
public void eat(){
System.out.println(“狗喜歡喫骨頭”);
}
public void shout(){
System.out.println(“狗是: 汪 汪 汪”);
}
}

// 重寫了父類的方法

class cat extends Animal{
public void eat(){
System.out.println(“貓喜歡喫魚”);
}
public void shout(){
System.out.println("貓是: 瞄 瞄 瞄 ");
}
}
在這裏插入圖片描述

四、equals 與== 的使用

1、 equals:

  • 明確一點equals 比較的是內容。
  • equals ()方法的使用
    1、是一個方法,不是運算符
    2、只能適用數據類型。
    3、在object 類中定義的equals()和 ==作用是相同的。比較兩個對象的地址值是否相同,即兩個引用是否指向同一個對象實體。
    4、像String、Date、File、包裝類都重寫了Object類中的equals()方法。重寫以後,比較的不是兩個引用地址是否相同,而是比較兩個對象的 “實體是否相同 ”。。

2、==:運算符

1、可以使用在基本數據類型變量和引用數據型變量中。
2、如果比較的基本數據類型變量:比較變量保存的數據是否相等。(不一定類型相同)
如果比較的引用數據類型變量:比較兩個對象的地址是否相同,即兩個引用是否指向同一個對象實體。

3、栗子:

在這裏插入圖片描述

4、關於二者之間的區別:面試題

在這裏插入圖片描述
 
 
如果我的博客對你有幫助、如果你喜歡我的博客內容,請“點贊” “評論”“收藏”一鍵三連哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章