黑马程序员技术交流社区
标题:
关于猫跳高、狗跳高习题
[打印本页]
作者:
黑马嗨嗨嗨
时间:
2016-12-27 14:51
标题:
关于猫跳高、狗跳高习题
已知动物类(姓名,年龄,吃饭,睡觉),它有两个子类,分别是猫类和狗类。
不同的是猫吃鱼,狗吃肉。
经过马戏团的培训后,部分猫会跳高,部分狗也会跳高。
我这么写对么?
class animals
{
String name;
int age;
void eat()
{
System.out.println(name+"..."+age+"。。。吃饭。。。");
}
void sleep()
{
System.out.println(name+"..."+age+"。。。睡觉。。。");
}
}
interface Jump
{
public abstract void jump();
}
class cat extends animals
{
void eat()
{
System.out.println(name+"..."+age+"。。。猫吃鱼。。。");
}
}
class dog extends animals
{
void eat()
{
System.out.println(name+"..."+age+"。。。狗吃肉。。。");
}
}
class aLittleCat extends cat implements Jump
{
public void jump()
{
System.out.println(name+"..."+age+"。。。猫跳高。。。");
}
}
class aLittleDog extends dog implements Jump
{
public void jump()
{
System.out.println(name+"..."+age+"。。。狗跳高。。。");
}
}
class Day09
{
public static void main(String[] args)
{
cat a = new aLittleCat();//送去马戏团学跳高
cat b = new cat();
dog c = new aLittleDog();//送去马戏团学跳高
dog d = new dog();
a.name="cata";
b.name="catb";
c.name="dogc";
d.name="dogd";
a.age=2;
b.age=5;
c.age=4;
d.age=3;
a.sleep();
b.sleep();
c.sleep();
d.sleep();
a.eat();
b.eat();
c.eat();
d.eat();
aLittleCat q=(aLittleCat) a;//部分猫学会跳高
q.jump();
aLittleDog w=(aLittleDog) c;//部分狗学会跳高
w.jump();
}
}
作者:
一片叶~
时间:
2017-1-1 08:30
建议最好将Animal 类定义成抽象类,成员私有化,使用构造方法赋值更简洁
作者:
gczsjj
时间:
2017-1-12 22:00
不对,因为猫和狗吃饭睡觉不同,建议在Animal类中定义为抽象类。参考代码如下:
abstract class Animal {
private String name;
private int age;
public Animal() {} //无参构造方法
public Animal(String name,int age) {
this.name = name;
this.age = age;
}
//抽象方法吃饭eat()
public abstract void eat();
//抽象方法睡觉sleep()
public abstract void sleep();
}
interface Jump {
//jump()
public abstract void jump();
}
//猫类
class Cat extends Animal {
public Cat() {}
public Cat(String name,int age) {
super(name,age);
}
public void eat() {
System.out.println("猫吃鱼");
}
public void sleep() {
System.out.println("猫侧身睡.");
}
}
//狗类
class Dog extends Animal {
public Dog() {}
public Dog(String name,int age) {
super(name,age);
}
public void eat() {
System.out.println("狗吃肉");
}
public void sleep() {
System.out.println("狗趴着睡.");
}
}
//跳高猫
class JumpCat extends Cat implements Jump {
public JumpCat() {}
public JumpCat(String name ,int age) {
super(name,age);
}
public void jump() {
System.out.println("跳高猫跳高.");
}
}
//跳高狗
class JumpDog extends Dog implements Jump {
public JumpDog() {}
public JumpDog(String name ,int age) {
super(name,age);
}
public void jump() {
System.out.println("跳高狗跳高.");
}
}
作者:
Rhwan
时间:
2017-1-13 12:07
动物工厂
作者:
guyouzhong
时间:
2017-1-22 09:13
可以用工厂方法类去实现呀
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2