1.抽象類只是比普通類多了一些抽象方法的定義而已,所以在抽象類之中依然允許提供有構造方法,並且子類也會遵守子類物件的例項化流程。例項化子類物件錢一定要先去呼叫父類的構造方法
範例:記住主類中的抽象方法只是宣告 要在繼承類中實現該抽象方法的具體內容
abstract class person
public abstract string getinfo();//抽象方法
}class student extends person
public string getinfo()
} public class testdemo
}*******************
###################
如果說現在父類中沒有無參構造,那麼子類就必須通過super()指明要呼叫的父類構造方法
abstract class person
public string getname()
public int getage()
public abstract string getinfo();//抽象方法
}class student extends person
public string getinfo()
} public class testdemo
}
其實抽象類中存在有構造方法也很好理解,畢竟抽象類中還有屬性
所有的屬性要在物件例項化的時候進行空間的開闢
物件例項化必須要使用構造方法。(所以抽象類必須有構造)
額外話題:
關於物件例項化
物件例項化操作需要以下幾個核心步驟
·進行類的載入
·進行類物件的空間開闢
·進行類物件中的屬性初始化(構造方法)
構造方法如果還沒執行的話,所有的屬性都是其對應資料型別的預設值
abstract class a
public abstract void print();//抽象方法
}class b extends a
public void print()
}public class testdemo
}
二。抽下類中允許不定義任何的抽象方法,但是此時抽象類物件依然無法進行直接例項化處理。
abstract class a
}public class testdemo
}
三。抽象類一定不能夠使用final進行宣告,因為使用final定義的類必須有子類,而抽象類必須有子類
·抽象方法不能夠使用private進行定義,因為抽象方法必須被覆寫;(private就封裝了)
四。(抽象類能不能用static定義呢?)
抽象類也分為內部抽象類和外部抽象類,內部抽象類中可以使用static定義,描述為外部抽象類。
範例:觀察內部抽象類
abstract class a
}class x extends a
class y extends b}}
public class testdemo
}
而如果現在外部抽象類上使用了static,那麼就是語法錯誤,可內部抽象類上允許使用static
abstract class a
}class x extends a.b
}public class testdemo
}
從一般的設計角度來講,以上的問題很多時候並不會出現。 抽象類的相關問題
有abstract方法的類一定要用abstract修飾。一下是一些關於abstract修飾符的用法及規則 abstract修飾符用來修飾類和成員方法 a 用abstract修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被例項化。b 用abstract修飾的方法表示抽象方法,抽象方法沒有方法...
抽象類 抽象方法
抽象類 1.類名前有abstruct修飾。有構造方法。在建立抽象類的子類的時候,還是會先建立抽象父類的物件的。2.抽象類不能例項化是指不能手動的new。抽象方法 1.抽象方法 沒有方法體且需要用abstruct關鍵字修飾 作用 需要改變的地方都應該是抽象。抽象方法只能存在於抽象類或介面中。2.有抽象...
抽象類,抽象方法
1 抽象類中可以有實現的方法。抽象方法必須在抽象類中。using system using system.collections.generic using system.linq using system.text namespace test 抽象類可以包含抽象屬性 public int age...