抽象類和抽象方法知識點
抽象類好比一個不具體的汽車藍圖,它不可以直接創造汽車,但是按照它繪製的另一個具體的藍圖可以。
【抽象類的定義】
1.類:用abstract修飾
2.抽象方法:用abstract修飾,且用分號;結束
【抽象類的特點】
1.抽象類和抽象方法都需要被abstract修飾。
2.抽象方法一定要在抽象類中;只有抽象類纔可以定義抽象方法。
!3.抽象類不可以創造實例--不可以用new創造對象--原因:調用抽象方法沒意義。
4.只有覆蓋了抽象類中所有的抽象方法後其子類纔可以實例化,否則該子類還是抽象類。
【抽象類的細節問題】
- 抽象類一定是父類嗎?
是的,因爲是不斷抽取而來的
- 抽象類是否有構造方法
有
但是不可以創建對象,但是子類的構造方法會調用父類的構造方法。
- 抽象類中是否可以不定義抽象方法
可以
- 抽象關鍵字不可以和哪些關鍵字共存
Final:抽象類需要子類
Private:抽象方法要被覆蓋
Static:靜態類的特點是可以直接被類調用
抽象類與抽象方法練習
package abstractlearning;
/**
* 練習抽象類和抽象方法
* 程序員:姓名、工號、薪水、工作內容
項目經理:姓名、工號、薪水、獎金、工作內容
對該需求進行數據建模
*/
abstract class Employee{
private String name;
private String id;
private double pay;
/*
* 構造一個員工,一初始化就具備三個屬性
*/
public Employee(String name,String id,double pay) {
this.id=id;
this.name=name;
this.pay=pay;
}
/*
* 工作行爲:不清楚
*/
abstract void work(); //工作內容
}
class programer extends Employee{
public programer(String name, String id, double pay) {
super(name, id, pay);
}
void work(){
System.out.println("編程");
}
}
class Manager extends Employee{
public Manager(String name,String id,double pay) {
super(name,id,pay);
}
void work() {
System.out.println("管理");
}
}
public class pratice {
public static void main(String[] args) {
Employee a=new programer("張三","1",10000);
a.work();
}
}