中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中多態和抽象類的實現方式

發布時間:2021-08-26 17:47:55 來源:億速云 閱讀:331 作者:chen 欄目:編程語言

這篇文章主要講解了“Java中多態和抽象類的實現方式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中多態和抽象類的實現方式”吧!

  多態

  1.要實現多態,那么必須存在父子關系(繼承關系或者實現接口)

  2.實現多態的方式:將父類對象的聲明指向子類對象,例如Pet pet = new Dog();

  例如:

  /*

  這是一個類名為Pet的父類

  */

  public class Pet {

  public void print() {

  System.out.println("----調用Pet父類的print方法-----");

  }

  }

  /*

  這是類名為Dog的第一個子類

  */

  public class Dog extends Pet{

  public void print() {

  System.out.println("-----調用Dog子類的print方法-----");

  }

  }

  /*

  這是類名為Cat的第二個子類

  */

  public class Cat extends Pet{

  public void print() {

  System.out.println("-----調用Cat子類的print方法----");

  }

  }

  /*

  這是類名為Test的測試類

  */

  public class Test {

  public static void main(String[] args) {

  Dog dog = new Dog();

  dog.print();

  //這里的輸出結果為:(-----調用Dog子類的print方法-----)

  Cat cat = new Cat();

  cat.print();

  //這里輸出的結果為:(-----調用Cat子類的print方法----)

  Pet pet = new Pet();

  pet.print();

  //這里輸出的結果為:(-----調用Pet父類的print方法----)

  //這里使用多態方法,將父類對象的聲明指向子類對象

  Pet pet1 = new Dog();

  pet1.print();

  //這里輸出的結果為:(-----調用Dog子類的print方法-----)

  }

  }

  3.向上轉型:向上轉型就是將子類對象賦值給父類對象的過程

  4.實現多態以后,從表面上看調用的是父類的方法,實際調用的是子類覆蓋掉父類的方法

  public class Test {

  public static void main(String[] args) {

  //這就是向上轉型

  Pet pet1 = new Dog();

  //實現多態以后,從表面上看調用的是父類的方法,實際調用的是子類覆蓋掉父類的方法

  pet1.print();

  //這里輸出的結果為:(-----調用Dog子類的print方法-----)

  }

  }

  5.向下轉型:向下轉型就是將多態的父類對象強制轉換成子類對象的過程

  6.當需要調用子類獨有的方法和屬性的時候,必須向下轉型

  public class Cat extends Pet{

  public void print() {

  System.out.println("-----調用Cat子類的print方法----");

  }

  //這是一個子類獨有的方法

  public void printCat() {

  System.out.println("----我是一只貓----");

  }

  }

  public class Test {

  public static void main(String[] args) {

  //這就是向上轉型

  Pet pet2 = new Cat();

  //這就是向下轉型

  Cat cat2 = (Cat)pet2;

  //當需要調用子類獨有的方法和屬性的時候,必須向下轉型

  cat2.printCat();

  //輸出的結果為:(----我是一只貓----)

  cat2.print();

  //輸出的結果為:(-----調用Cat子類的print方法----)

  }

  }

  注意:

  7.通過instanceof判斷當前的pet2對象是否是Dog對象,如果是返回值為true,否則返回值為false

  8.報錯信息為:(Exception in thread “main” java.lang.ClassCastException: com.four.Pet cannot be cast to com.four.Cat at com.four.Test.main(Test.java:18))

  這是當時遇到的一個報錯,需要特別注意。解決方法如下:

  錯誤代碼為:

  public class Test {

  public static void main(String[] args) {

  Pet pet2 = new Cat();

  Dog dog2 = (Dog)pet2;

  dog2.print();

  }

  }

  修改后的正確代碼為:

  public class Test {

  public static void main(String[] args) {

  Pet pet2 = new Cat();

  //通過instanceof判斷當前的pet2對象是否是Dog對象,如果是返回值為true,否則返回值為false

  if(pet2 instanceof Dog) {

  Dog dog2 = (Dog)pet2;

  dog2.print();

  }else if(pet2 instanceof Cat) {

  Cat cat2 = (Cat)pet2;

  cat2.print();

  }

  }

  }

  抽象類

  1.抽象類的語法格式:修飾符 abstract class 類名{類體}

  2.定義抽象方法的格式:修飾符 abstract 返回值類型 方法名(參數列表)

  3.抽象類中可以定義普通方法,也可以定義抽象方法,普通類中不能定義抽象方法

  4.抽象類中可以定義構造方法,普通類也可以,當一個普通類繼承了抽象類之后,該普通類必須實現抽象類中的抽象方法鄭州做婦科檢查價格 http://www.zzkdfk.com/

  /*

  這是一個類名為Animal的抽象類

  */

  public abstract class Animal {

  //這是定義的一個變量

  public String name;

  //這是一個名為print的普通方法

  public void print() {

  System.out.println("-----我的print方法-----");

  }

  //這是一個名為method的抽象方法

  public abstract void method();

  //這是一個無參的構造函數

  public Animal() {

  }

  //這是一個有參的構造函數

  public Animal(String name) {

  this.name = name;

  }

  }

  5.抽象類不能直接創建對象,如果要創建對象,則必須是多態的方式創建。

  例如

  錯誤案例,這樣寫會直接報錯。

  /*

  這是一個類名為Test的測試類

  */

  public class Test {

  public static void main(String[] args) {

  Animal animal = new Animal();

  }

  }

  真確案例:

  /*

  創建一個類名為Bird

  */

  public class Bird extends Animal{

  public void method() {

  System.out.println("-----我是一只小鳥,我會飛------");

  }

  }

  public class Test {

  public static void main(String[] args) {

  //利用多態的方式創建抽象類的對象

  Animal animal = new Bird();

  animal.method();

  }

  }

  6.抽象類中的方法不能用private、final修飾,因為抽象類中的方法是用來被繼承的。

  總結

  抽象類的目的就是:抽象類的作用類似于“模板”,其目的是方便開發人員根據抽象類的格式來修改和創建新類。抽象類主要用于繼承,有利于程序的擴展。

感謝各位的閱讀,以上就是“Java中多態和抽象類的實現方式”的內容了,經過本文的學習后,相信大家對Java中多態和抽象類的實現方式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙雅县| 宁都县| 台湾省| 治县。| 惠水县| 广南县| 五华县| 宁波市| 西林县| 商城县| 庄河市| 竹北市| 怀远县| 青海省| 阿城市| 搜索| 无锡市| 大竹县| 宜兰市| 冀州市| 福鼎市| 乌恰县| 迁西县| 宁蒗| 横峰县| 武川县| 松桃| 东宁县| 涿鹿县| 吉安县| 游戏| 永兴县| 新绛县| 东城区| 周口市| 黄大仙区| 佛学| 屏东市| 定结县| 高平市| 招远市|