抽象 abstract 用來修飾類和方法的
1.抽象方法:沒有方法體、一定要重寫
2.普通類繼承抽象類,那麼需要重寫所有的抽象方法,如果不想都重寫抽象方法需要把普通類變成抽象類
3.抽象類一定含有抽象方法?不一定
4.抽象類可以定義構造方法?可以
5.抽象類建立對象?沒有對象
6.抽象方法可以被private修飾嗎?不能被修飾,抽象方法一定要被重寫
7.抽象類目的是為了延展類的繼承結構
抽象的意義:對代碼的維護和重用。
抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。具體分析如下:
①.因為抽象類不能執行個體化對象,是以必須要有子類來實作它之後才能使用。這樣就可以把一些具有相同屬性和方法的元件進行抽象,這樣更有利于代碼和程式的維護。
比如大學和研究所學生可以抽象成學生,他們有相同的屬性和方法。這樣當你對其中某個類進行修改時會受到父類的限制,這樣就會提醒開發人員有些東西不能進行随意修改,這樣可以對比較重要的東西進行統一的限制,也算是一種保護,對維護會有很大的幫助。
②.當又有一個具有相似的元件産生時,隻需要實作該抽象類就可以獲得該抽象類的那些屬性和方法。
比如學校又新産生了專科生這類學生,那麼專科生直接繼承學生,然後對自己特有的屬性和方法進行補充即可。這樣對于代碼的重用也是很好的展現。
是以,Java中抽象類對于代碼的維護和重用有很好的幫助,也是Java面向對象的一個重要展現。
靜态 static

1.static修飾成員變量
靜态變量是随着類的加載(靜态常量池)而加載到靜态區,與類同級,也叫類變量,可以通過類名.形式(常用)來調用靜态變量也可以通過對象調用。存儲在靜态區的靜态變量會被賦予系統預設初始值。無論建立多少個對象都會共享同一個靜态變量。
方法中可以定義靜态變量?不能 方法裡面定義的内容隻有被調用時才會被加載,靜态變量與類同級,是以不能定義。
2.靜态方法
靜态方法随着類的加載而加載到靜态區,與類同級,也叫類方法,可以通過類名.形式來調用也可以通過對象來調用。靜态區不會給靜态方法賦予系統預設初始值,靜态方法被調用加載到棧中來執行。
靜态方法可以定義靜态變量?不可以 方法裡面定義的内容隻有被調用時才會被加載,靜态變量與類同級,是以不能定義。
靜态資訊隻能直接使用靜态資訊,非靜态資訊可以直接使用靜态資訊以及非靜态資訊
```java
public class StaticDemo2 {
int i=1;
static int j=2;
public void m(){
//非靜态方法可以直接使用非靜态變量
System.out.println(i);
//非靜态方法可以直接使用靜态變量
System.out.println(j);
}
public static void n(){
//靜态方法不可以直接使用非靜态變量
//System.out.println(i);
//靜态方法可以直接使用靜态變量
System.out.println(j);
}
}
靜态對于重載和重寫
支援重載
不支援重寫:靜态方法與類同級,重寫與對象一個級别,沒有重寫。
父子類中允許出現方法簽名一緻的兩個靜态方法,沒有重寫
父子類中允許出現方法簽名一緻的兩個非靜态方法,有重寫