黑馬程序員——抽象類

---------------------- <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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章