1. 程式人生 > >抽象類和介面的相同點和不同點,學習筆記

抽象類和介面的相同點和不同點,學習筆記

抽象類和介面的相同點:

1.都不能被例項化

2.介面的實現類或抽象類的子類都只有實現了介面或抽象類中的方法後才能被例項化

不同點:

1.介面只有定義,其方法不能再介面中實現,只有實現介面的類才能實現介面中定義的方    法,而抽象類的方法可以再抽象類中被實現。

2.介面需要用implements實現,抽象類只能被繼承(extends)。

3.設計理念不同,介面是"has - a ",抽象類是"is -a "

4.介面中定義的成員變數預設修飾符為public static final(靜態不能被修改),而且必須      給其賦初值。抽象類可以有自己的資料成員變數,也可以有非抽象的成員變數,而且抽象類中的成員變數預設為default(本包可見)。抽象類中的方法前面有abstract修飾,不能用private、static、synchronize、native修飾,同時方法必須以分號結尾,不帶花括號。

為了方便理解,加入一段程式碼方便理解介面

interface Person{
	public static final int num=100;
	public void hairColor();//不能使用{}方法體括號,否則會報錯
	public void bodyLength();
 }

public class InterfaceFaceDemo01 implements Person{
/*
 * @see Person#hairColor()
 * 使用介面後,必須將介面中的方法全部覆蓋一遍,不然會報錯
 */
	public void hairColor(){
		System.out.println("頭髮顏色:紅色");
	}
	@Override
	public void bodyLength() {
		System.out.println("身高:180");
		
	}
	public static void main(String[] args) {
		//要使用介面中的方法,需要例項化物件才能呼叫
		
		/*
		 * 對比之前的筆記,如果不使用介面,又要使用方法,是需要在方法前面新增修飾符static的
		 */
InterfaceFaceDemo01 iDemo01=new InterfaceFaceDemo01(); iDemo01.bodyLength(); iDemo01.hairColor(); } }