java陷阱---super.getClass()

[code]
下面程序的输出结果是多少?
import java.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}

public void test(){
System.out.println(super.getClass().getName());
}
}

在test方法中,直接调用getClass().getName()方法,返回的是Test类名
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在
test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();

[/code]
好的,你的问题已经收到。根据你的要求,下面是实现Java project Pet的具体步骤: 1. 打开Eclipse或其他Java IDE,创建一个Java project,项目名为Pet。 2. 在src目录下,按照要求创建com.pet.animal和com.pet.food这两个包,并在animal和food包中分别创建Dog、Food、Meat和Bone这四个类。 3. 首先,定义Food类的代码如下: ``` package com.pet.food; public class Food { public int needMoney() { return 0; } } ``` 其中,needMoney()函数返回0。因为这是一个基类,具体的费用值需要在其派生类中定义。 接下来,定义Meat类和Bone类,它们继承自Food,并分别覆写了父类的needMoney()函数,代码如下: ``` package com.pet.food; public class Meat extends Food { @Override public int needMoney() { return 30; } } package com.pet.food; public class Bone extends Food { @Override public int needMoney() { return 15; } } ``` 可以看到,Meat的费用为30元,Bone的费用为15元。 4. 接下来,实现Dog类中的eat()方法。代码如下: ``` package com.pet.animal; import com.pet.food.Food; public class Dog { private int money; public Dog(int money){ this.money = money; } public int eat(Food food, int money){ int foodMoney = food.needMoney(); if(money >= foodMoney) { money -= foodMoney; System.out.println("Dog eats " + food.getClass().getSimpleName() + ". The remaining money is " + money + "."); }else{ System.out.println("Not enough money!"); } return money; } } ``` 可以看到,eat()方法接受一个Food对象和一个原有的钱数,返回剩余的钱数。根据食物价格进行扣款,输出每次剩余的钱数,并返回最终的剩余钱数。如果钱数不够,则输出“Not enough money!”提示。 5. 最后,创建MainApp类,在其main()函数中设计一个菜单并且创建Dog对象。代码如下: ``` package com.pet; import com.pet.animal.Dog; import com.pet.food.Bone; import com.pet.food.Food; import com.pet.food.Meat; public class MainApp { public static void main(String[] args) { Dog myDog = new Dog(200); Food[] menu = new Food[] {new Meat(), new Bone(), new Meat(), new Bone(), new Meat(), new Bone(), new Meat()}; for(int i=0; i<menu.length; i++) { Food foodToday = menu[i]; System.out.println("Today's food is " + foodToday.getClass().getSimpleName() + "."); myDog.eat(foodToday, myDog.money); } } } ``` 可以看到,我们创建了一个Dog对象myDog,并设计了一个菜单menu,其中每天都吃一种食物。最后遍历菜单,并调用myDog的eat()方法喂食。 好了,以上就是实现Java project Pet的详细步骤。祝你成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值