一、定義
抽象類是一種不能被實例化的類,其中可以包含未實現的方法和已實現的方法,但是必須用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
微信掃一掃
支付寶掃一掃