Java——5分鐘帶你瞭解什麼是抽象類

這是我參與更文挑戰的第4天,活動詳情查看: 更文挑戰web

抽象類

學習抽象類以前,咱們要知道爲何要學抽象類,抽象類用來幹什麼?帶着這兩個問題來迎接咱們接下來的學習。設計模式

第一個問題:咱們爲何要學抽象類?
當咱們定義類的時候,每每會給這些類寫一些方法,這些方法用來描述該類的行爲。
假如咱們要求不一樣形狀的面積,咱們能夠定義一個Shape類,但不一樣的Shape子類計
算面積的方法是不同的,咱們的Shape類並不知道怎麼計算每個不一樣形狀的圖形
面積,這時咱們就能夠使用抽象類,使抽象類中含有求面積這一通用行爲,而咱們通
太重寫getArea()方法,就能夠求不一樣形狀的面積。

複製代碼

可能到這裏你還不明白,不要緊,下面咱們經過例子來具體分析。markdown

在第二個問題以前咱們先了解抽象類和抽象方法的一些規則。post

抽象類和抽象方法的規則

  • 抽象類和抽象方法必須經過abstract關鍵字修飾,而且抽象方法不能聲明方法體。
public abstract class Test {
	public Test(){
	}
	//抽象方法不能含有方法體
	public abstract void showAll(){
		//error
	}
	public abstract void Print();
}
複製代碼
  • 抽象類中能夠不包含抽象方法,也能夠包含抽象方法,但含有抽象方法的類必定是抽象類。
public abstract class Test {
	public Test(){
	}
	//抽象類中能夠有非抽象方法,也能夠含有抽象方法
	public void speak (String s){
		System.out.println(s);
	}	
        public abstract void Print();
}

public  class Test {
	public Test(){
	}
	//非抽象類,不能含有抽象方法
	public abstract void Print();//error
}

複製代碼
  • 抽象類不能被實例化,即不能使用new關鍵字來調用構造器建立對象。可是抽象類中能夠含有構造器,其構造器主要是用於其子類調用。
接下來是咱們的第二個問題,抽象類用來幹什麼呢?
抽象類不能建立實例,只能被當成父類來繼承,而使用抽象類,能夠發揮多態的優點,使程序更加
靈活。其實抽象類是一種更高級的抽象,它從一些具備相同特徵的子類中抽象出來,做爲子類的通用
模板。
抽象類體現的就是一種模板設計,這也是設計模式的一中。(若是想要了解設計模式,建議你們去b站
找視頻來學習,對咱們的工做仍是頗有用的。)
複製代碼

須要注意的是抽象類是abstract關鍵字修飾的,代表這個類只能被繼承,而抽象方法一樣須要abstract來修飾,代表這個方法只能被子類重寫,而final修飾的類不能被繼承,被final修飾的方法不能被重寫,所以永遠不能同時使用abstract和final。學習

以上就是我對抽象類的一些淺解,若有不對或遺漏之處,歡迎你們留言指正。spa

下期咱們來說和抽象類有關的接口。設計

相關文章
相關標籤/搜索