java中什麼是抽象類(abstract)

一、什麼是抽象類

由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類。抽象的類無法進行實例化,因爲他不是具體存在的類,或者說這樣的類還不夠完善,不能直接使用new關鍵字調用其構造器生成該類的對象。我們可以使用abstract定義一個抽象類和抽象方法,示例代碼如下:

abstract class 類名

{

abstract int 方法名(int x,int y);

}

抽象的方法沒有方法體。需要注意的是在抽象類中既可以有抽象方法,也可以有普通方法,注意抽象方法是沒有方法體的(也就是方法後面是沒有大括號的)。凡是繼承這個抽象類的實體子類,都必須要實現這個抽象方法。

我們總結一下抽象類的特點:

(1)抽象類不能被實例化

(2)構造方法 和 static 方法不能是抽象的

(3)父類的抽象方法往往在子類中實現

(4)抽象類可以具有指向子類對象的對象引用

二、抽象類的例子

我們先來看看要完成的實際例子:

 

1、定義抽象類員工Employee,

(a)保護字段:姓名name,性別gender,年齡age等基本屬性。

(b)定義抽象方法函數getsalary()表示領工資的操作

(c)定義普通函數whoami()輸出 :我是+姓名

(d)擁有(姓名name,性別gender)參數的構造函數

定義一個經理類Manager 派生於員工;

(a)除了有員工等基本屬性外,還有崗位級別 gree私有屬性

(b)經理領7000元工資,打印並輸出工資。

(c)重寫父類的whoami(),調用父類的whoami()方法,再輸出:我是一名經理。

定義一個會計類Accounting,派生於員工類;

(a)除了有員工等基本屬性外,還有會計等級 rating私有屬性

(b)會計領3000元工資,打印並輸出工資。

(c)重寫父類的whoami(),調用父類的whoami()方法,再輸出:我是一名會計。

複製代碼

/**
 * 定義類員工Employee,
 */
public abstract class Employee {
    protected String name;
    protected boolean gender;
    protected int age;
    public Employee(String name,boolean gender){
        this.name=name;
        this.gender=gender;
    }
    /**
    * 表示領工資的操作
    */
    public abstract void getsalary();
    public void whoami(){
        System.out.println("我是"+name);
    }
}

複製代碼

 

 

我們新建一個經理類Manager,繼承Employee類,這時候Eclipse就提示我們必須要重寫抽象方法getsalary。示例代碼如下:

複製代碼

/**
 * 經理類
 */
public class Manager extends Employee{
    private String gree;
    
    public Manager(String name,boolean gender){
        super(name,gender);
    }
    //重寫父類的抽象方法
    public void getsalary(){
        System.out.println("經理領7000元工資");
    }

    public void whoami(){
        super.whoami();//顯示調用父類的方法
        System.out.println("我是經理");
    }
}

複製代碼

 

接下來是會計類。和上面的經理類差不多了。

複製代碼

/**
 * 會計
 */
public class Accounting extends Employee {
    private int rating;
    public Accounting(String name, boolean gender) {
        super(name, gender);
    }
    @Override
    public void getsalary() {
        System.out.println("會計發3000工資");
    }
    public void whoami() {
        super.whoami();// 顯示調用父類的方法
        System.out.println("我是會計");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章