abstract抽象類和抽象方法
/**
* 測(cè)試抽象abstract類和抽象方法
* 抽象類是一種規(guī)范 通過空的抽象方法規(guī)范了子類必須要實(shí)現(xiàn)的功能
* 抽象類只能用來被繼承
* 每個(gè)子類必須要重寫抽象方法 實(shí)現(xiàn)抽象類規(guī)定的這些功能才能被創(chuàng)建
*/
public abstract class TestAbstract {
? ?//抽象類用abstract修飾 類中含有抽象方法時(shí)該類必須定義成抽象類
? ?public abstract void turnOn();
? ?//抽象方法不加方法體{} 用abstract修飾
? ?//這條抽象方法規(guī)定:設(shè)備必須要有啟動(dòng)方法 每個(gè)子類必須實(shí)現(xiàn)啟動(dòng)方法才能創(chuàng)建
? ?public abstract void turnOff();
? ?//這條抽象方法規(guī)定:設(shè)備必須要有關(guān)閉方法 每個(gè)子類必須實(shí)現(xiàn)關(guān)閉方法
? ?int price;
? ?//抽象類內(nèi)可以有普通屬性和普通方法
? ?String name;
? ?public void print(){
? ? ? ?System.out.println(name+price);
? ?}
? ?public TestAbstract(int price, String name) {
? ? ? ?//抽象類的構(gòu)造方法不能用來new對(duì)象(實(shí)例化) 可以被子類調(diào)用super
? ? ? ?this.price = price;
? ? ? ?this.name = name;
? ?}
? ?public TestAbstract(){}
? ?//無參構(gòu)造方法和有參構(gòu)造方法構(gòu)成重載overload
}
class Radio extends TestAbstract{
? ?//定義class radio繼承TestAbstract 時(shí)就會(huì)報(bào)錯(cuò) 要求實(shí)現(xiàn)方法
? ?@Override
? ?public void turnOn() {
? ? ? ?System.out.println("Radio.turnOn");
? ?}
//每一個(gè)子類都需要重寫父類的抽象方法 實(shí)現(xiàn)方法后才可以創(chuàng)建
? ?@Override
? ?public void turnOff() {
? ? ? ?System.out.println("Radio.turnOff");
? ?}
? ?public Radio(int price,String name){
? ? ? ?super(price, name);
? ? ? ?//調(diào)用抽象類的構(gòu)造方法
? ?}
}