抽象類的概念:
抽象類就是在普通類的基礎上擴充一些抽象方法,所謂的抽象方法指的是值宣告而未實現的方法(沒有方法體)
所有的抽象方法要求使用abstract關鍵字來定義,並且抽象等待所在的類也一定要用abstract關鍵字定義,表示抽象類
abstract class person
public void setname(string name)
//{}裡面的**為方法體,所有抽象方法不包含方法體
public abstract void getperson();//抽象方法
}
抽象類中包含抽象方法,而抽象方法不包含方法體,即沒有具體實現因此抽象類不能夠產生例項化物件
對於抽象類的使用原則
a.所有的抽象類必須有子類
b.抽象類的子類必須覆寫抽象類的所有抽象方法
c.抽象類的物件可以通過物件多型性利用子類為其實例化
d.private 與 abstract 不能同時使用
abstract class person
public void setname(string name)
//{}裡面的**為方法體,所有抽象方法不包含方法體
public abstract void getperson();//抽象方法
}class student extends person
}public class test
}
abstract class person
public string getname()
public void setname(string name)
public abstract void getinfo();//抽象方法
}class student extends person
@override
public void getinfo() //子類覆寫方法空實現
}public class test
}
物件例項化操作的核心步驟:
類載入 -> 類物件的開闢 -> 類物件屬性的初始化(構造方法)
2、抽象類中允許不定義抽象方法,但是此時抽象方法仍然無法直接建立例項化物件
abstract class person
}public class test
}
3、抽象類一定不能使用final宣告,因為final宣告的類不允許有子類,抽象類又必須有子類;抽象方法也不能用private定義,因為抽象方法必須被覆寫
4、抽象類分為內部抽象類和外部抽象類。內部抽象類中可以使用static定義來描述外部抽象類
abstract class person
}class child extends person
class a extends student
}}
介面的定義與使用
抽象類與普通類相比最大的特點就是約定了子類的實現要求,但是抽象類存在單繼承侷限,如果要約定子類的實現要求且避免單繼承就可以使用介面
介面的基本概念
定義:介面就是乙個抽象方法和全域性常量的集合,用inte***ce關鍵字定義
inte***ce imes
子類要想實現介面,就必須使用implements關鍵字來實現介面。
同時,乙個子類可以實現多個介面,對於介面的子類必須覆寫介面的全部抽象方法,隨後利用子類的向上轉型通過例項化子類得到介面的例項化物件
子類實現介面 & 父介面相互轉換
inte***ce imes
inte***ce inew
class mess implements imes,inew
@override
public string getnews()
}public class test
}
介面使用限制
介面只允許使用public許可權(不管是屬性還是方法,其許可權都是public)
介面的兩種定義:
//完整格式:
inte***ce imes
//簡化格式:
inte***ce imes
阿里編碼規約:介面中的方法和屬性不加任何修飾符號,public也不要加,保持**的簡潔性
當乙個子類即需要實現介面又需要繼承類時,需先使用extends繼承乙個抽象類,而後使用implements實現多個介面
//子類繼承抽象類和實現介面
abstract class news
class message extends news implements imes
@override
public void getnews()
}public class test
}
乙個抽象類可以使用implements實現多個介面
inte***ce imes
abstract class news implements imes
class message extends news
@override
public void getnews()
}
此關係屬於三層繼承
class message extends news implements imes
乙個介面可以使用extends繼承多個父介面
inte***ce a
inte***ce b
inte***ce c extends a,b
class impl implements c
@override
public void printb()
@override
public void printc()
}
介面可以定義一系列的內部結構,包括:內部普通類、內部介面。其中使用static定義的內部介面就相當於乙個外部介面
//使用static定義的內部介面
inte***ce a
}class impl implements a.b
}
介面能力的應用:定義標準
介面在實際開發中有三大核心應用環境
a.定義操作標準
b.表示能力
c.在分布式開發之中暴露遠端服務方法
java抽象類與介面的區別抽象類與介面的特性是什麼
介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...
java抽象類與介面的區別
含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件,含有abstract的方法的類必須定義為abstract class abstract class 裡的方法不必是抽象的,抽象類中定義抽象方法必須放在具體子類中實現,所以呀,不能有抽象的構造方法或抽象的靜態方法,...
JAVA抽象類與介面的區別
抽象類和介面的區別 抽象類是乙個模板,類的模板,而介面是乙個標準。序號區別點 抽象類介面1定義 包含抽象方法的類就是抽象類 抽象方法和全域性常量的集合2組成 構造方法,抽象方法,普通方法 常量和抽象方法 常量,變數3使用 子類繼承抽象類 extends 子類實現介面 implements 關鍵字 a...