第四題:根據(jù)需求完成代碼: 1.定義動(dòng)物類 屬性: 年齡,顏色 行為: eat(String something)方法(無具體行為,不同動(dòng)物吃的方式和東西不一樣,something表示吃的東西) 生成空參有參構(gòu)造,set和get方法 2.定義狗類繼承動(dòng)物類 ? 行為: eat(String something)方法,看家lookHome方法(無參數(shù)) 3.定義貓類繼承動(dòng)物類 行為:eat(String something)方法,逮老鼠catchMouse方法(無參數(shù)) 4.定義Person類 屬性: 姓名,年齡 行為: keepPet(Dog dog,String something)方法 功能:喂養(yǎng)寵物狗,something表示喂養(yǎng)的東西 行為: keepPet(Cat cat,String something)方法 功能:喂養(yǎng)寵物貓,something表示喂養(yǎng)的東西 生成空參有參構(gòu)造,set和get方法 ? 5.定義測試類(完成以下打印效果): keepPet(Dog dog,String somethind)方法打印內(nèi)容如下: 年齡為30歲的老王養(yǎng)了一只黑顏色的2歲的寵物 2歲的黑顏色的狗兩只前腿死死的抱住骨頭猛吃 keepPet(Cat cat,String somethind)方法打印內(nèi)容如下: 年齡為25歲的老李養(yǎng)了一只灰顏色的3歲的寵物 3歲的灰顏色的貓瞇著眼睛側(cè)著頭吃魚*/package com.heima.tes4;public class Person { private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void keepPet(Animal a, String something) { if (a instanceof Dog) { Dog d = (Dog) a; d.eat(something); System.out.println("年齡為" + age + "歲的" + name + "養(yǎng)了一只" + d.getColor() + "顏色的" + d.getAge() + "歲的寵物"); } else if (a instanceof Cat) { Cat c = (Cat) a; c.eat(something); System.out.println("年齡為" + age + "歲的" + name + "養(yǎng)了一只" + c.getColor() + "顏色的" + c.getAge() + "歲的寵物"); } }}最后一問 為什么要用強(qiáng)制類型轉(zhuǎn)換,還要調(diào)用d.eat(something);這個(gè)方法 ,真的是看不懂啊,求解決,萬分感謝!
3 回答
已采納

不學(xué)就廢了
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超6個(gè)贊
貓和狗都是父類動(dòng)物的子類,里面的方法都多于父類,吃東西的方法屬于子類中特有的方法,所以,如果想要調(diào)用吃東西的方法必須把動(dòng)物的實(shí)例轉(zhuǎn)化為貓類或者是狗類,所以要用到強(qiáng)制類型轉(zhuǎn)換

不學(xué)就廢了
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超6個(gè)贊
在第一個(gè)問題中,定義了一個(gè)animal類,所以cat 和dog都繼承了這個(gè)animal類,所以,貓類和狗類是animal類的子類,在第五題最初,傳入了一個(gè)動(dòng)物實(shí)例,按照if語句的判斷條件選擇執(zhí)行
添加回答
舉報(bào)
0/150
提交
取消