當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Interface和Class的區別用法及代碼示例


本文重點介紹了 Java 中類和接口之間的區別。它們在語法上看起來很相似,都包含方法和變量,但它們在很多方麵都有所不同。

類和接口之間的區別

下表列出了 Java 語言中接口和類之間的所有主要區別:

Class

Interface

用於創建類的關鍵字是“class” 用於創建接口的關鍵字是“interface”
類可以被實例化,即可以創建類的對象。 接口無法實例化,即無法創建對象。
類不支持多重繼承。 該接口支持多個inheritance.
它可以從另一個類繼承。 它不能繼承類。
它可以使用關鍵字‘extends’被另一個類繼承。 它可以通過使用關鍵字 ‘implements’ 被類繼承,也可以通過使用關鍵字 ‘extends’ 被接口繼承。
它可以包含構造函數。 它不能包含構造函數。
它不能包含抽象方法。 它僅包含抽象方法。
類中的變量和方法可以使用任何訪問說明符(public、private、default、protected)進行聲明。 接口中的所有變量和方法都聲明為公共的。
類中的變量可以是 static、final 或兩者都不是。 所有變量都是靜態的和最終的。

Java 中的類

class 是用戶定義的藍圖或原型,用於創建對象。它表示一種類型的所有對象所共有的一組屬性或方法。一般來說,類聲明可以包含這些組件,按順序:

  1. 修飾符:類可以是公共的或具有默認訪問權限(請參閱這個詳情)。
  2. 類名稱:名稱應以首字母開頭(按照慣例大寫)。
  3. 超類(如果有):類的父類(超類)的名稱(如果有),前麵帶有關鍵字 extends。一個類隻能擴展(子類)一個父類。
  4. 接口(如果有):由類實現的接口的逗號分隔列表(如果有),前麵帶有關鍵字implements。一個類可以實現多個接口。
  5. Body:類主體用大括號 { } 括起來。

構造函數用於初始化新對象。字段是提供類及其對象的狀態的變量,方法用於實現類及其對象的行為。

例子:

Java


// Java program to demonstrate Class
// Class Declaration
public class Dog {
    // Instance Variables
    String name;
    String breed;
    int age;
    String color;
    // Constructor Declaration of Class
    public Dog(String name, String breed, int age,
               String color)
    {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
    }
    // method 1
    public String getName() { return name; }
    // method 2
    public String getBreed() { return breed; }
    // method 3
    public int getAge() { return age; }
    // method 4
    public String getColor() { return color; }
    @Override public String toString()
    {
        return ("Hi my name is " + this.getName()
                + ".\nMy breed, age and color are "
                + this.getBreed() + ", " + this.getAge()
                + ", " + this.getColor());
    }
    public static void main(String[] args)
    {
        Dog tuffy
            = new Dog("tuffy", "papillon", 5, "white");
        System.out.println(tuffy.toString());
    }
}
輸出
Hi my name is tuffy.
My breed, age and color are papillon, 5, white

接口 Java 語

與類一樣,interface 可以具有方法和變量,但接口中聲明的方法默認是抽象的(隻有方法簽名,沒有人)。

  • 接口指定類必須做什麽而不是如何做。這是類的藍圖。
  • 接口是關於函數的,就像播放器可以是接口一樣,任何實現播放器的類都必須能夠(或必須實現)move()。因此它指定了該類必須實現的一組方法。
  • 如果一個類實現了一個接口並且沒有為接口中指定的所有函數提供方法體,則該類必須聲明為抽象的。
  • Java 庫示例是 Comparator Interface 。如果一個類實現了這個接口,那麽它就可以用來對集合進行排序。

用法:

interface <interface_name> {
    
    // declare constant fields
    // declare methods that abstract 
    // by default.
}

例子:

Java


// Java program to demonstrate
// working of interface.
import java.io.*;
// A simple interface
interface in1 {
    // public, static and final
    final int a = 10;
    // public and abstract
    void display();
}
// A class that implements the interface.
class testClass implements in1 {
    // Implementing the capabilities of
    // interface.
    public void display() { System.out.println("Geek"); }
    // Driver Code
    public static void main(String[] args)
    {
        testClass t = new testClass();
        t.display();
        System.out.println(a);
    }
}
輸出
Geek
10


相關用法


注:本文由純淨天空篩選整理自deepthisenthil大神的英文原創作品 Differences between Interface and Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。