1. 程式人生 > >Java 抽象類 接口

Java 抽象類 接口

產生 技術分享 class文件 返回值 的區別 ace nts private 類型

抽象
抽象方法定義的格式:
public abstract 返回值類型 方法名(參數);
抽象類定義的格式:
abstract class 類名 {
}

public abstract class Fu {//抽象類
	public abstract void work();//抽象方法
	public void eat() {//抽象類可以放普通類
		System.out.println("吃飯");
	}
}

public class Zi extends Fu{
	public void work() {
		System.out.println("java工程師在工作");
	}
}

public class Zi2 extends Fu{
	public void work() {
		System.out.println("Android工程師在工作");
	}
}

  技術分享圖片

特點
1、抽象類和抽象方法都需要被abstract修飾。抽象方法一定要定義在抽象類中。
2、抽象類不可以直接創建對象,原因:調用抽象方法沒有意義。
3、只有覆蓋了抽象類中所有的抽象方法後,其子類才可以創建對象。否則該子類還是一個抽象類。
註意
1、抽象類一定是個父類 因為不斷抽取而來的。
2、抽象類中可以定義普通方法。那這個抽象類的存在的意義是不讓該類創建對象,方法可以直接讓子類去使用
3、abstract 不能和 private(矛盾) 、final(常量) 、 static 一起用

接口

接口是功能的集合
接口只描述所應該具備的方法,並沒有具體實現
這樣將功能的定義與實現分離,優化了程序設計
接口定義時需要使用interface關鍵字
定義接口所在的仍為.java文件,雖然聲明時使用的為interface關鍵字的編譯後仍然會產生.class文件
定義格式:
public interface 接口名 {
抽象方法1;
抽象方法2;
抽象方法3;
}
接口中的方法均為公共訪問的抽象方法
接口中無法定義普通的成員變量
類實現接口。實現的動作類似繼承,只是關鍵字不同,實現使用implements
格式
class 類 implements 接口 {
重寫接口中方法
}
接口中成員的特點
1、接口中可以定義變量,但是變量必須有固定的修飾符修飾,public static final 所以接口中的變量也稱之為常量,其值不能改變。後面我們會講解static與final關鍵字
2、接口中可以定義方法,方法也有固定的修飾符,public abstract
3、接口不可以創建對象。
4、子類必須覆蓋掉接口中所有的抽象方法後,子類才可以實例化。否則子類是一個抽象類。
接口的多實現

public interface Fu {
	public abstract void work();
}

public interface Zi {
	public abstract void eat();

}

public class Zi2 implements Fu,Zi{

	public void eat() {
		
	}

	public void work() {
		
	}
	
}


類繼承類並實現接口

public abstract class Fu {//抽象類
	public abstract void work();//抽象方法
}

public interface Zi {
	public abstract void eat();

}

public class Zi2 extends Fu implements Zi{

	public void eat() {
		
	}

	public void work() {
		
	}
	
}


接口的多繼承

public interface Fu {//抽象類
	public abstract void work();//抽象方法
	
}

public interface Zi{
	public abstract void eat(); 
}

public interface Zi2 extends Fu,Zi{
	public abstract void sleep();
}

抽象類與接口的區別
1.抽象類中可以有普通成員變量,接口中沒有普通成員變量
2.抽象類可以有構造方法,接口中不能有構造方法
3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
4. 抽象類中可以包含靜態方法,接口中不能包含靜態方法
5. 抽象類中的抽象方法的訪問類型可以是 public,protected ,
但接口中的抽象方法只能是 public 類型的,並且默認即為 public abstract 類型
6. 一個類可以實現多個接口,但只能繼承一個抽象類。
7. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,
但接口中定義的變量只是public static final 類型,並且默認即為 public static final 類型。

應用

//定義抽象狗類
public abstract class Dog {
	public abstract void eat();
	public abstract void wang();
}
//定義緝毒接口
public interface Look {
	public void look();
}
//定義緝毒狗
public class Jd_Dog extends Dog implements Look{
	public void eat() {
		System.out.println("能吃");
	}
	public void wang() {
		System.out.println("能汪汪叫");
	}
	public void look() {
		System.out.println("找毒品");
	}
}

技術分享圖片

Java 抽象類 接口