使用抽象類和接口設(shè)計(jì)寵物店

1. 分析寵物店種的類與方法

寵物:狗屁使,貓在岂,鴨子
寵物屬性:有名字,健康值
狗類的屬性:狗還有種類
方法:都會(huì)叫蛮寂,都會(huì)簡紹自己

鑒于它們都會(huì)叫和簡紹蔽午,所以可以用接口或者抽象類來實(shí)現(xiàn)方法

2.代碼如下:

定義抽象類,內(nèi)含聲音方法,j簡紹方法

package petshop;

public abstract class  Function {
    abstract void sound() ;
    abstract void speak();
}

定義寵物類酬蹋,內(nèi)含寵物姓名及老,寵物健康值

package petshop;

public class Pets extends Function {
    private String name ;
    private int healthIndex;

    public Pets() {
        this("無名氏",80);
    }

    public Pets(String name, int healthIndex) {
        this.name = name;
        this.healthIndex = healthIndex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealthIndex() {
        return healthIndex;
    }

    public void setHealthIndex(int healthIndex) {
        this.healthIndex = healthIndex;
    }

    @Override
    void sound() {

    }

    @Override
    void speak() {
        System.out.println("我的名字是:"+this.name+"我的健康值是:"+this.healthIndex);
    }
}

定義狗類,內(nèi)包含狗類別和繼承父類寵物類

package petshop;

public class Dog extends Pets {
    private String  kinds;

    public Dog() {
        super();
        this.kinds = "品種未知";
    }

    public Dog(String name, int healthIndex, String kinds) {
        super(name, healthIndex);
        this.kinds = kinds;
    }

    public String getKinds() {
        return kinds;
    }

    public void setKinds(String kinds) {
        this.kinds = kinds;
    }

    @Override
    public void sound() {
        System.out.println("汪汪汪");
    }

    @Override
    public String toString() {
        return super.toString()+"范抓,我的品種是:"+kinds;
    }
}

Duck 類

package petshop;

public class Duck extends Pets {
    public Duck() {
    }

    public Duck(String name, int healthIndex) {
        super(name, healthIndex);
    }

    @Override
    public void sound() {
        System.out.println("嘎嘎嘎");
    }
}

Cat類

package petshop;

public class Cat extends Pets {
    public Cat() {
    }

    public Cat(String name, int healthIndex) {
        super(name, healthIndex);
    }

    @Override
    public void sound() {
        System.out.println("喵喵喵");
    }
}

PetsShop類 其中包括商店進(jìn)寵物骄恶,還有隨機(jī)給顧客簡紹寵物

package petshop;

import java.util.Random;
import java.util.Scanner;

public class PetShop {
    static Pets pet[] = new Pets[3];
    static PetShop petShop = new PetShop();

    static Scanner scanner = new Scanner(System.in);

    static String name[] = new String[3];
    static int healthIndex[] = new int[3];
    static String kinds[] = new String[3];

    public static void main(String[] args) {
        String str = new String();
//進(jìn)貨
        for (int i = 0; i < 3; i++) {
            System.out.println("請輸入Dog/Cat/Duck");
            str = scanner.next();
            if (str.equalsIgnoreCase("dog")) {
                System.out.println("請輸入第" + (i + 1) + "只寵物的名字");
                name[i] = scanner.next();
                System.out.println("請輸入第" + (i + 1) + "只寵物的健康指數(shù)");
                healthIndex[i] = scanner.nextInt();
                System.out.println("請輸入第" + (i + 1) + "只寵物的種類");
                kinds[i] = scanner.next();
                petShop.pet[i] = new Dog(name[i], healthIndex[i], kinds[i]);
            } else if(str.equalsIgnoreCase("duck")){
                System.out.println("請輸入第" + (i + 1) + "只寵物的名字");
                name[i] = scanner.next();
                System.out.println("請輸入第" + (i + 1) + "只寵物的健康指數(shù)");
                healthIndex[i] = scanner.nextInt();
                petShop.pet[i] = new Duck(name[i], healthIndex[i]);
            }else if (str.equalsIgnoreCase("cat")){
                System.out.println("請輸入第" + (i + 1) + "只寵物的名字");
                name[i] = scanner.next();
                System.out.println("請輸入第" + (i + 1) + "只寵物的健康指數(shù)");
                healthIndex[i] = scanner.nextInt();
                petShop.pet[i] = new Cat(name[i], healthIndex[i]);
            }else {
                System.out.println("輸入錯(cuò)誤!匕垫!");
            }

        }
            for (int i = 0; i < 3; i++) {
            //隨機(jī)選擇寵物
            int index = new Random().nextInt(petShop.pet.length);
            Pets pet = petShop.pet[index];

            //寵物開始自我介紹
            pet.speak();

            //我給你唱歌
            pet.sound();
        }
    }
}

3.接口實(shí)現(xiàn)

將抽象類換成接口僧鲁,方法不用實(shí)現(xiàn),誰調(diào)用接口誰實(shí)現(xiàn)方法象泵,可以將sound()與speak()分成兩個(gè)接口寞秃,使其復(fù)用性更強(qiáng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末偶惠,一起剝皮案震驚了整個(gè)濱河市春寿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忽孽,老刑警劉巖绑改,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兄一,居然都是意外死亡厘线,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門瘾腰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皆的,“玉大人,你說我怎么就攤上這事蹋盆》驯。” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵栖雾,是天一觀的道長楞抡。 經(jīng)常有香客問我,道長析藕,這世上最難降的妖魔是什么召廷? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上竞慢,老公的妹妹穿的比我還像新娘先紫。我一直安慰自己,他們只是感情好筹煮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布遮精。 她就那樣靜靜地躺著,像睡著了一般败潦。 火紅的嫁衣襯著肌膚如雪本冲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天劫扒,我揣著相機(jī)與錄音檬洞,去河邊找鬼。 笑死沟饥,一個(gè)胖子當(dāng)著我的面吹牛添怔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闷板,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼澎灸,長吁一口氣:“原來是場噩夢啊……” “哼院塞!你這毒婦竟也來了遮晚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拦止,失蹤者是張志新(化名)和其女友劉穎县遣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汹族,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萧求,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顶瞒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夸政。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖榴徐,靈堂內(nèi)的尸體忽然破棺而出守问,到底是詐尸還是另有隱情,我是刑警寧澤坑资,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布耗帕,位于F島的核電站,受9級特大地震影響袱贮,放射性物質(zhì)發(fā)生泄漏仿便。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗽仪。 院中可真熱鬧荒勇,春花似錦、人聲如沸闻坚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲤氢。三九已至搀擂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卷玉,已是汗流浹背哨颂。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留相种,地道東北人威恼。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓坤检,卻偏偏與公主長得像押逼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子哎迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容