一、定義
抽象類是一種不能被實例化的類,其中可以包含未實現的方法和已實現的方法,但是必須用abstract關鍵字修飾。
介面是一種只能包含全局靜態常量和全局抽象方法的類型,其中所有的方法必須是公共的且未實現的。
二、用途
抽象類作為一種中間層的角色,被用來聲明標準化方法以及聲明需要由其子類實現的方法。
介面被用來定義可以被不同類實現的規範。
三、繼承
一個類只能繼承一個抽象類,但是可以同時實現多個介面。
介面可以被介面繼承,並且一個類也可以同時實現多個介面。
四、構造器
抽象類可以包含有參構造器,但是不能被實例化。它們的構造器僅被子類調用,並且必須是子類中的第一個語句。
介面不能包含構造器,因為它們不能被實例化。
五、變數
抽象類中的變數可以是使用關鍵字final和static定義的變數,或者是普通實例變數。
介面中的變數必須是公共(public)、靜態(static)和常量(final),並且必須在聲明時進行初始化。
六、訪問修飾符
抽象類的方法可以是包(default)、抽象(abstract)、受保護(protected)和公共(public)的,並且也可以包含靜態(static)和最終(final)方法。
介面的方法必須是公共(public),並且不能包含任何實現。
七、代碼示例
//抽象類 public abstract class Animal{ protected String name; public Animal(String name){ this.name = name; } public abstract void eat(); public void move(){ System.out.println(name + " is moving"); } } //子類 public class Dog extends Animal{ public Dog(String name){ super(name); } public void eat(){ System.out.println(name + " is eating"); } } //介面 public interface Animal{ public static final String NAME = "Animal"; public abstract void eat(); public void move(); } //實現類 public class Dog implements Animal{ private String name; public Dog(String name){ this.name = name; } public void eat(){ System.out.println(name + " is eating"); } public void move(){ System.out.println(name + " is moving"); } }
原創文章,作者:XZNJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141082.html