所謂抽象類就是只聲明方法的存在而不去具體實(shí)現(xiàn)它的類。抽象類不能被實(shí)例化,也就是不能創(chuàng)建其對(duì)象。在定義抽象類時(shí),要在class關(guān)鍵字前面加上abstract關(guān)鍵字。定義抽象類,語(yǔ)法格式如下:
abstract class 類名 {
類體
}
定義一個(gè)名稱為Fruit的抽象類:
public abstract class Fruit { //定義抽象類
public String color;? ? //定義顏色成員變量
//定義構(gòu)造方法
public Fruit() {
color = "綠色";? ? //對(duì)變量color進(jìn)行初始化
}
}
在抽象類中創(chuàng)建的,沒(méi)有實(shí)際意義的,必須要子類重寫(xiě)的方法稱為抽象方法。抽象方法只有方法的聲明,而沒(méi)有方法的實(shí)現(xiàn),用abstract關(guān)鍵字進(jìn)行修飾。聲明一個(gè)抽象方法的基本格式如下:
abstract <方法返回值類型> 方法名(參數(shù)列表);
在Fruit抽象類中定義一個(gè)抽象方法
public abstract class Fruit { //定義抽象類
public String color;? ? //定義顏色成員變量
//定義構(gòu)造方法
public Fruit() {
color = "綠色";? ? //對(duì)變量color進(jìn)行初始化
}
//定義抽象方法
public abstract void harvest();? //收獲的方法
}
1.創(chuàng)建Fruit類的子類Apple,并實(shí)現(xiàn)harvest()方法,代碼如下:
public class Apple extends Fruit {
@Override
public void harvest() {
System.out.println("蘋(píng)果已經(jīng)收獲");
}
}
2.創(chuàng)建Fruit的子類Orange,并實(shí)現(xiàn)harvest()方法,代碼如下:
public class Orange extends Fruit {
@Override
public void harvest() {
System.out.println("桔子已經(jīng)收獲");
}
}
3.創(chuàng)建一個(gè)包含main()方法的公共類Farm,在該類中執(zhí)行Fruit類中的兩個(gè)子類的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é)果:
蘋(píng)果已經(jīng)收獲
桔子已經(jīng)收獲