java修飾符五 abstract 修飾符

2021-05-26 19:06:51 字數 1457 閱讀 2485

7.abstract 修飾符

abstract 修飾符可以用來修飾類和成員方法

用 abstract 修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被例項化,即不允許建立抽象類本身的例項。沒有用 abstract 修飾的類稱為具體類,具體類可以被例項化。

用 abstract 修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具有什麼功能,但不提供具體的實現。沒有用 abstract 修飾的方法稱為具體方法,具體方法具有方法體。

abstract 語法規則:

抽象類可以沒有抽象方法,但包括了抽象方法的類必須被定義為抽象類。如果子類沒有實現父類中所有的抽象方法,那麼子類也必須被定義為抽象類。

以下乙個父類

package test;  

//抽象類  

abstract class shape               

//定義了乙個抽象方法,方法體為空,只要有類繼承就必須實現這個抽象方法,否則子類也必須宣告為抽象類  

abstract double area();            

}  其中乙個抽象方法 abstract double area();

現有一子類去實現這個父類,會出現什麼情況?

package test;  

//子類繼承父類  

class square extends shape  

}  error!!!

父類有一抽象方法 abstract double area();

子類必須去實現,否則本身也只能為抽象類。

所以,要麼:

package test;  

//子類繼承父類  

class square extends shape  

//實現抽象方法  

double area()  

}  要麼:

package test;  

//子類繼承父類  

abstract class square extends shape  

}  沒有抽象構造方法,也沒有抽象靜態方法。

abstract class base 

抽象類中可以有非抽象的構造方法,建立子類的例項時可能會呼叫這些構造方法。抽象類不能被例項化,然而可以建立乙個引用變數,其型別是乙個抽象類,並讓它引用非抽象的子類的乙個例項。

abstract class base{}  

class sub extends base} 

抽象類及抽象方法不能被 final 修飾符修飾。因為抽象類只允許建立子類,它的抽象方法才能被實現,並且只有它的具體子類才能被例項化,而用final 修飾的類不允許擁有子類,用 final 修飾的方法不允許被子類方法覆蓋,因此把abstract 修飾符與 final 修飾符連用,會導致自相矛盾。(從而引申出介面的方法不能用final修飾)

java修飾符 abstract 修飾符

abstract 修飾符 abstract 修飾符可以用來修飾類和成員方法 用 abstract 修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被例項化,即不允許建立抽象類本身的例項。沒有用 abstract 修飾的類稱為具體類,具體類可以被例項化。用 abstract 修飾的方法表示抽象...

java 類修飾符 成員變數修飾符 方法修飾符總結

類修飾符 public 訪問控制符 將乙個類宣告為公共類,他可以被任何物件訪問,乙個程式的主類必須是公共類。abstract,將乙個類宣告為抽象類,沒有實現的方法,需要子類提供方法實現。final,將乙個類生命為最終 即非繼承類 表示他不能被其他類繼承。friendly,預設的修飾符,只有在相同包中...

java訪問控制修飾符,final修飾符

package mainfunction import test1.dog 修飾類檔案 如果不加任何修飾預設就是protest,及只有本包內的檔案可以訪問,其他包不能訪問,外部包要能訪問必須加上pubilic修飾該類 public class persion param age 年齡 param i...