淺談Java三大特性之繼承

 

前言

類的繼承性是面嚮對象語言的基本特性,多態性前提是繼承性。Java 支持繼承性和多態性。——Java從小白到大牛繼承

繼承:三大特性之一,關鍵詞:extends接口

簡單用僞代碼去介紹一些

  • 假設須要定義個student類內存

public class Student{
   private String name;//名字
   private int age;//年齡
   private int sex;//性別
}
  • 再來個需求,須要定義一個學生Andy,不用繼承時候,須要一個個去定義;string

public class Andy{
   private String name;
   private int age;
   private int sex;
   private String country;//新增一個國家信息
}
  • 從上面看二者有着不少的類似的重複定義的東西,若是使用繼承去寫這段代碼就能夠以下:it

public class Andy extends student{
private String country
}

因此從上面能夠看出類的繼承大體用途,Andy類已經繼承了Student類,上面的父類即是student,extends後面跟着的。繼承的時候,要明確指出,要否則就是在Java標準根類Object進行繼承。class

再者,在繼承的過程當中,除了你能夠在新的類中去添加東西,也不必定非得使用基類的方法屬性等。

  • 還能夠有多層繼承關係(下面的輸出是隨便定義的僞代碼,能夠是直接輸出某一些語句,方便運行查看)

class Art{
Art(){輸出1}
}
class Music extends Art{
Music(輸出2)
}
class Dance extends music{
public Dance(){輸出3}
public static void main(String args[]){
dance x = new dance();
}
}
//輸出的順序是1 2 3

父類與子類的構造函數問題

  • 若不在類中定義構造函數,會默認生成一個無參的函數構造器,若是有了就不會。(構造器即構造函數,與類同名,在初始化的時候就被調用,,默認的構造函數是不帶任何參數的)

class Art{


//等同於下面
class Art{
public Art(){
//
}
  • super關鍵字

Java用super表示超類的醫生,當前類是從超類繼承來的。

class Game{
   int h;
   Game(int i){//構造函數
       System.out.println("this is a game!");
  }
   public static void printg(int d){//普通函數
       System.out.println("12");
  }
}
class ballGame extends Game{

   ballGame(int i){
       super(i);//調用父類的構造器,漏了這句就會報錯,顯示there is no default constructor available
       System.out.println("ballGame is coming!");
       super.h = 3;//訪問父類的屬性
  }
}

super能夠用於訪問父類定義的屬性,用於調用父類中的成員方法,super表明父類的內存空間。能夠訪問父類的父類

class Game{
   int h;
   Game(int i){//構造函數
       System.out.println(i);//輸出
       System.out.println("第一層");
  }
   public static void printg(int d){//普通函數
       System.out.println("1");
  }
}
class ballGame extends Game{
   ballGame(int i){
  super(i);//調用父類的構造器
  System.out.println("第二層");
  super.h = 2;//訪問父類的屬性
  }
}

public class jichengSuper extends ballGame{
   jichengSuper(int b) {
  super(b);//調用的是上面父類的構造函數,將輸出3
    int a = super.h ;//將第二層裏的3賦值給a
    System.out.println(a);//打印
  }
   public static void  main(String args[]){
       new jichengSuper(3);//這裏的3將代進去上面的構造函數jichengSuper中
       System.out.print("最後一層");
  }

}
/**
*output:
3
第一層
第二層
2
最後一層
*/

 

  • 接口在實現的時候,在類中必定要實現接口的抽象方法

  • 而繼承不用,想要用哪一個再用

 

others

能夠有多個接口可是隻能有一個繼承。通常狀況下,一個子類只能繼承一個父類,這稱爲「單繼承」,但有的狀況下一個子類能夠有多個不一樣的父類,這稱爲「多重繼承」。在Java中,類的繼承只能是單繼承,而多重繼承能夠經過實現多個接口實現。

相關文章
相關標籤/搜索