所謂抽象類就是只聲明方法的存在而不去具體實現(xiàn)它的類接谨。抽象類不能被實例化笼蛛,也就是不能創(chuàng)建其對象窝爪。在定義抽象類時弛车,要在class關(guān)鍵字前面加上abstract關(guān)鍵字齐媒。定義抽象類,語法格式如下:
abstract class 類名 {
類體
}
定義一個名稱為Fruit的抽象類:
public abstract class Fruit { //定義抽象類
public String color;? ? //定義顏色成員變量
//定義構(gòu)造方法
public Fruit() {
color = "綠色";? ? //對變量color進行初始化
}
}
在抽象類中創(chuàng)建的纷跛,沒有實際意義的喻括,必須要子類重寫的方法稱為抽象方法。抽象方法只有方法的聲明贫奠,而沒有方法的實現(xiàn)唬血,用abstract關(guān)鍵字進行修飾。聲明一個抽象方法的基本格式如下:
abstract <方法返回值類型> 方法名(參數(shù)列表);
在Fruit抽象類中定義一個抽象方法
public abstract class Fruit { //定義抽象類
public String color;? ? //定義顏色成員變量
//定義構(gòu)造方法
public Fruit() {
color = "綠色";? ? //對變量color進行初始化
}
//定義抽象方法
public abstract void harvest();? //收獲的方法
}
1.創(chuàng)建Fruit類的子類Apple唤崭,并實現(xiàn)harvest()方法刁品,代碼如下:
public class Apple extends Fruit {
@Override
public void harvest() {
System.out.println("蘋果已經(jīng)收獲");
}
}
2.創(chuàng)建Fruit的子類Orange,并實現(xiàn)harvest()方法浩姥,代碼如下:
public class Orange extends Fruit {
@Override
public void harvest() {
System.out.println("桔子已經(jīng)收獲");
}
}
3.創(chuàng)建一個包含main()方法的公共類Farm挑随,在該類中執(zhí)行Fruit類中的兩個子類的harvest()方法:
public class Farm {
public static void main(String[] args) {
// TODO Auto-generated method stub
Apple apple = new Apple();
apple.harvest();
Orange orange = new Orange();
orange.harvest();
}
}
執(zhí)行結(jié)果:
蘋果已經(jīng)收獲
桔子已經(jīng)收獲