---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO開發S</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
3.9抽象類
1、特點:⑴、方法只有聲明沒有實現時,該方法就是抽象方法,需要被abstract修飾,抽象方法必須被定義在抽象類中,該類也得被abstract修飾。
⑵、抽象類不可以實例化,因爲調用方法沒有意義。
⑶、抽象類必須有其子類覆蓋了所有的抽象方法後,該子類纔可以實例化,否則該類還是抽象類。
2、問題細節:⑴、抽象類中有構造函數,用於給子類對象進行初始化
⑵、抽象類中也有非抽象方法,目的就是不讓該類創建對象
3、抽象類不可以與那些關鍵字共存?
⑴、private:如果私有了,就不可以被子類覆蓋了
⑵、static:
⑶、final:final是最終的,被他修飾的不可以覆蓋。
4、抽象類與一般類的異同點:
⑴、相同:他們都是用來描述事物的,都在內部定義成員
⑵、不同:①、一般類有足夠的信息描述事物,而抽象類信息不足
②、抽象類可定義抽象方法和非抽象方法,而一般類只能定義非抽象方法
③、抽象類不可以實例化,而一般類可以。
5、抽象類一定是父類,因爲需要子類覆蓋其所有的抽象方法後,才能對子類實例化。
abstract class Employee { private String name; private String id; private double pay; Employee(String name, String id, double pay) { this.name = name; this.id = id; this.pay = pay; } public abstract void work(); } class Manager extends Employee{ private int bonus; Manager(String name, String id, double pay, int bonus) { super(name,id,pay); this.bonus = bonus; } @Override public void work() { System.out.println("Manager work"); } } class Pro extends Employee{ Pro(String name, String id, double pay) { super(name,id,pay); } @Override public void work() { System.out.println("Pro work"); } } public class AboutAbstract { public static void main(String[] args) { Manager man = new Manager("hufei", "4556", 11110, 256); man.work(); } }
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
詳細請查看:<ahref="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>