国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡單的理解類的繼承和多態性

2019-11-18 12:02:42
字體:
來源:轉載
供稿:網友

  /*
  * Created on 2004-8-31
  *
  * TODO To change the template for this generated file go to
  * Window - PReferences - java - Code Style - Code Templates
  */
  
  /**
  * @author diyer6
  *
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  /*
  類的繼續
  1、在java中通過要害字 extends 繼續一個已有的類,被繼續的類成為父類(基類),新的類
  稱為 子類(派生類)。
  2、在java中,不答應多繼續。
  3、在子類中定義一個與父類同名、返回類型、參數類型均相同的一個方法,稱為方法的 覆蓋。
  4、覆蓋 發生在子類與父類之間。
  5、非凡變量super 提供了對父類的訪問。
  6、可以使用super 訪問父類被子類隱藏的變量和覆蓋的方法。
  7、每個子類構造方法的第一條語句,都是隱含的調用super(),假如父類沒有構造方法,
  那么在編譯的時候就會報錯。
  
  多態性
  1、通過覆蓋父類的方法來實現,在運行時根據傳遞的對象引用,來調用相應的方法。
  2、簡單概括多態性:當我們將子類對象的引用傳給聲明為父類的一個對象變量,假如子類有
  這個方法就調用子類的方法,假如子類沒有這個方法就調用父類的這個方法。
  3、多態性的好處:它可以根據在運行的時候,根據我們傳遞不同對象的引用,
  來調用不同對象的方法。
  */
  public class Animal { //父類
  int height,weight; // 變量(數據)
  Animal(int height, int weight)//父類的構造方法 (帶參數的父類構造方法)
  {
  System.out.println("animal constrUCt");
  }
  void eat() //父類的方法
  {
  System.out.println("animal eat");
  }
  void sleep()//父類的方法
  {
  System.out.println("animal sleep");
  }
  void breathe()//父類的方法
  {
  System.out.println("animal breathe");
  }
  
  }
  class Fish extends Animal { //子類 要害字 extends 使 Fish 繼續了 Animal 的 變量和方法
  int height;//子類的變量 ,在調用時會隱藏父類的變量。
  Fish()//子類的構造方法
  {
  super(30,40);//利用 super 調用帶參數的父類構造方法。
  //不能Animal(30,40)這樣直接調用父類構造方法。只能用super()調用。
  //父類的構造方法不能被子類繼續。
  
  //super();//在調用子類構造方法的時候,隱含的調用了 super() 變量,
  //也就是先調用父類的構造方法(不帶參數)在調用子類的構造方法。假如父類沒有構造方法,編譯器就會報錯。
  System.out.println("fish construct");
  }
  void breathe()//子類的方法
  {
  super.breathe();//通過 super 非凡變量 可以調用被子類覆蓋的父類方法。
  super.height=40;//通過 super 非凡變量 可以調用被子類隱藏的父類變量。
  System.out.println("fish bubble");
  }
  }
  class Integration {
  static void fn(Animal an)
  {
  an.breathe();
  }
  public static void main(String[] args){
  Animal an = new Animal(); //實例化Animal類的對象,an是對象的reference(引用)
  Fish fh = new Fish();//實例化Fish類的對象,fh是對象的reference(引用)
  an.breathe();//an 調用Animal類的void breathe()方法。
  fh.height=30;//fh給Animal類的變量int height 賦值.繼續父類的成員變量.
  fh.breathe();//fh調用它自己的方法,假如它自己沒有這個方法但父類(Animal)中有這個方法,它就會調用父類中的這個方法。
  //反之(假如有),它就會調用它自己的方法,這就是方法的覆蓋。
  
  //多態性
  Animal an;//將an聲明為Animal的對象變量。
  Fish fh2 = new Fish();
  fh2.eat();
  an=fh;
  an=fh2;//因為子類沒有eat()這個方法,所以這調用的是父類的eat()方法。
  Integration.fn(an);//直接用類名調用靜態方法(static)。多態性
  }
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德化县| 菏泽市| 积石山| 萨迦县| 新绛县| 灌阳县| 大悟县| 沾益县| 汕尾市| 荆门市| 台南县| 微博| 西畴县| 宜君县| 会东县| 广饶县| 浮山县| 永仁县| 鄢陵县| 浑源县| 汤阴县| 湛江市| 和平区| 岳西县| 邓州市| 镇坪县| 沙田区| 乌苏市| 竹北市| 临沧市| 拉萨市| 瑞安市| 呼伦贝尔市| 佛坪县| 浏阳市| 五家渠市| 霍林郭勒市| 黎平县| 秀山| 河津市| 温宿县|