日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《学习笔记》面向对象(四)多态,instanceof关键字,抽象

發布時間:2024/3/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《学习笔记》面向对象(四)多态,instanceof关键字,抽象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、final關鍵字

1、final:不可更改的
2、final可以修飾類【不能被繼承】,成員變量【變量變常量】,成員方法【方法不能被重寫】
3、常量定義的格式:public static final double PI = 3.141592653589793;

多態

多態就是事物的多種形態

對象的多態性:同一個對象,可能具有不同的名稱,可以有不同類型的引用指向它【同一個對象,有不同的名稱和描述】
類的多態性:同一個類型,可能有不同子類的實現。同一個類型的引用,可能會指向不同子類的對象。【同一個名字和描述,可能在不同場景有不同的實現】

多態的前提:要有繼承關系,有方法的重寫,父類引用指向子類對象

2、多態中成員變量的訪問特點

1、編譯看左邊,運行看左邊

編譯看左邊:如果左側父類中沒有定于相關的變量,就會編譯不通過
運行看左邊:如果左側父類中有對應的成員變量,就會執行父類中的成員變量

多態多種成員方法的訪問特點

編譯看左邊,運行看右邊

編譯看左邊:如果左側父類中沒有定義相關的方法,就會編譯不通過
運行看右邊:如果右側對象所屬類型中有相應的成員方法,就會之那個對象所屬類型的方法【非靜態】

public static void main(String[] args) {//父類引用指向子類對象//成員變量是從一個類的角度去描述一個對象Animal a = new Cat();Cat a1 = new Cat();//編譯看左邊,運行看左邊System.out.println(a.color);//動物類的color屬性System.out.println(a.age);//30a.show1();//147}class Animal {String color = "動物類的color屬性";int age = 30;public void show1() {System.out.println("123");}}class Cat extends Animal {String color = "橘色的貓";int age = 3;public void show1() {System.out.println("147");}} ## 多態中靜態方法的訪問特點 1、編譯看左邊,運行看左邊 2、靜態的最終解釋: (1)靜態變量:存儲在類的字節碼文件中,被所有對象共享,不隨著對象的變化而變化,所有的對象都具有相同的靜態變量,所以稱之為靜態變量 (2)靜態方法:只會根據引用所屬的父類類型,來決定要運行的內容,和對象沒有任何關系,不會隨著對象的變化而變化,所以稱之為靜態方法 (3)多態討論的是對象的情況,靜態與對象無關,所以靜態的成員只根據類來討論,不用考慮多態性,靜態也不具備多態性## 向下轉型 1、如果子類對象想要執行自己所屬類型特有的方法,就要從父類引用指向子類對象編程本類引用指向本類對象 2、格式:(目標類型)要轉換的對象:IronMan im = (IronMan)m; 3、本質:恢復了子類對象原本具有的訪問范圍 ## 向上轉型 1、原本使用子類對象引用指向子類的對象,變化成了父類引用指向子類對象。本質:縮小了訪問范圍,減少了訪問權限```java public static void main(String[] args) {Man m = new IronMan();System.out.println(m.name);//托尼史塔克m.dealBusiness();//談幾個億的大生意//向下轉型IronMan im = (IronMan)m;im.fly();//飛im.dealBusiness();//談幾個億的大生意//向上轉型IronMan im1 = new IronMan();Man m2 = im1;m2.dealBusiness();//談幾個億的大生意System.out.println(m2.name);//托尼史塔克 }class Man { String name = "托尼史塔克";public void dealBusiness() {System.out.println("談生意"); } }class IronMan extends Man { String name = "鋼鐵俠";public void dealBusiness() {System.out.println("談幾個億的大生意"); }public void fly() {System.out.println("飛"); } }

總結:當子類重寫了父類的成員方法,父類成員變量訪問父類成員方法就變成重寫之后子類的成員方法;當向上轉型之后訪問的成員方法依然是重寫的成員方法

多態的好處

1、提高了代碼的可擴展性
2、在方法的參數列表中定義父類的引用,將來傳入子類的對象都可以使用
3、在實際開發中,對象的來源非常廣泛,例如:自己new的,調用方法返回的,文件中讀取的,框架底層利用反射機制自動創建的,從網絡中傳輸的等等,如果使用之前本類引用指向本類對象,接受對應的對象難度較大,可以結合多態,保證接收的遍歷。

public static void main(String[] args) {JuiceMachine jm = new JuiceMachine();Apple a = new Apple();Pear p = new Pear();Melon m = new Melon();Fruit f = new Melon();a.flow();//流出蘋果汁p.flow();//流出冰糖雪梨汁m.flow();//流出西瓜汁f.flow();//流出西瓜汁}class JuiceMachine {public void makeJuice(Fruit f) {//Fruit f = new Apple();f.flow();}public void makeJuice(Apple a) {a.flow();}public void makeJuice(Pear p) {p.flow();}public void makeJuice(Melon m) {m.flow();} }class Fruit {public void flow() {System.out.println("流出水果汁");} }class Apple extends Fruit {public void flow() {System.out.println("流出蘋果汁");} }class Pear extends Fruit {public void flow() {System.out.println("流出冰糖雪梨汁");} }class Melon extends Fruit {public void flow() {System.out.println("流出西瓜汁");} }class Mango extends Fruit {@Overridepublic void flow() {System.out.println("流出芒果汁");} }

instanceof關鍵字

1、格式:A instanceof B
2、關鍵字,是一個運算符,【A是一個對象,B是一個類型。用于判斷A對象是否和B類型有關,如果A對象和B類型有關就返回true,否則返回false】

抽象

1、抽象:抽取相似的、相同的代碼部分
2、抽象方法:只有方法聲明,沒有方法實現的方法,就是抽象方法,額外的在方法聲明上加上abstract關鍵字,用來表明是一個抽象方法
3、定義格式:抽象方法只有方法聲明沒有方法實現,連大括號都沒有,直接在參數列表之后加上分號,在方法的聲明上額外添加abstract關鍵字即可

抽象類

1、可以定義抽象方法的類就是抽象類
2、格式:
abstract class 類名 {}

public class Duixiang {public static void main(String[] args) {Animal a = new Dog();a.call();} }abstract class Animal {public abstract void call();//抽象方法 }class Cat extends Animal {@Overridepublic void call() {System.out.println("喵喵喵");}}class Dog extends Animal {@Overridepublic void call() {System.out.println("汪汪汪");}}

抽象類特點

1、抽象類和抽象方法都必須用abstract

抽象類:abstract class 類名{ }
抽象方法:public abstract void 方法名(列表);

2、抽象類和抽象方法的區別:

抽象方法所在的類必須是抽象方法
抽象類中不一定都是抽象方法

3、抽象類不能實例化(不能創建對象)

抽象類成員的特點

1、可以有成員變量,用于給子類繼承【子類是非抽象類】
2、有構造方法,用于給成員變量賦值
3、有成員方法,可以是抽象方法也可以是非抽象方法【非抽象方法可以直接被子類繼承,抽象方法需要子類重寫】

總結

以上是生活随笔為你收集整理的《学习笔记》面向对象(四)多态,instanceof关键字,抽象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。