Java 類和接口的繼承


繼承的概念

  繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

  繼承的主要作用在於,在已有基礎上繼續進行功能的擴充。

繼承的特性

  子類擁有父類非private的屬性,方法。

  子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。

  子類可以用自己的方式實現父類的方法。

  Java的繼承是單繼承,但是可以多重繼承,單繼承就是一個子類只能繼承一個父類,多重繼承就是,例如A類繼承B類,B類繼承C類,所以按照關系就是C類是B類的父類,B類是A類的父類,這是java繼承區別於C++繼承的一個特性。

  提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯系)。

接口類

  在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。

  接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。

  除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。

  接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。

  接口與類的區別:

    接口不能用於實例化對象。

    接口沒有構造方法。

    接口中所有的方法必須是抽象方法。

    接口不能包含成員變量,除了 static 和 final 變量。

    接口不是被類繼承了,而是要被類實現。

    接口支持多繼承。

  定義格式:

    public interface 接口名 {

      抽象方法1;

      抽象方法2;

      抽象方法3;

    }

繼承關鍵字

  繼承可以使用 extends 和 implements 這兩個關鍵字來實現繼承,而且所有的類都是繼承於 java.lang.Object,當一個類沒有繼承的兩個關鍵字,則默認繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。

  extends關鍵字

    在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。

  extends格式

1 class 父類 {
2 }
3  
4 class 子類 extends 父類 {
5 }

  extends應用

     父類:

 1 public class Animal { 
 2     private String name;  
 3     private int id; 
 4     public Animal(String myName, int myid) { 
 5         name = myName; 
 6         id = myid;
 7     } 
 8     public void eat(){ 
 9         System.out.println(name+"正在吃"); 
10     }
11     public void sleep(){
12         System.out.println(name+"正在睡");
13     }
14     public void introduction() { 
15         System.out.println("大家好!我是"         + id + "號" + name + "."); 
16     } 
17 }

    子類:

1 public class Mouse extends Animal { 
2     public Mouse(String myName, int myid) { 
3     } 
4 }

  父類中的方法已經被子類繼承,無需創建直接調用即可

 

  implements關鍵字

    使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。

  implements格式

 1 public interface A {
 2     public void eat();
 3     public void sleep();
 4 }
 5  
 6 public interface B {
 7     public void show();
 8 }
 9  
10 public class C implements A,B {
11 }

  implements應用

  接口:

public interface Smoking {
    //成員變量
    public static final double a=3.14159;
    int b=7;
    //接口中的所有方法都是抽象方法
    public abstract void smoke();
}

  繼承:

1 public class Person implements Smoking {
2 
3     @Override
4     public void smoke() {
5         System.out.println("抽煙");
6         
7     }
8 
9 }

 注意事項

  1.接口不能創建對象,只能讓別人實現
  2.接口中成員變量只能用public static final 修飾
               公共 靜態 常量
    public:公共的,在任何包任何類中都可以訪問
    static:靜態的,只要被靜態修飾就可以通過 類名.屬性名/方法名() 調用
    final:最終的, final修飾變量,則該變量就是一個常量,一次賦值終身不變
  3.接口中如果不寫修飾符,默認給你添加修飾符,缺哪個添哪個
  4.接口中的方法只能是 public abstract 修飾 缺哪個添哪個

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM