在“抽象类练习1:猫狗案例”的基础上,猫狗案例加入额外功能:跳高jump()
注意分析:是有的猫会跳高,有的狗会跳高
所以定义一个跳高接口。再定义两个类:跳高猫,继承猫,实现猫的跳高接口;跳高狗,继承狗,实现狗的跳高接口。
/*
[抽象类]动物 abstract class Animal :
成员变量:姓名、年龄
构造方法
成员方法:abstract void eat();
[类]猫 继承 动物 :
构造方法
成员方法:重写eat()
[类]狗 继承 动物:
构造方法
成员方法: 重写eat()
[接口]Jump:
抽象成员方法:jump()
[类]跳高猫 继承猫:
成员方法:实现jump()
[类]跳高狗 继承狗:
成员方法:实现jump()
*/
//跳高接口
interface Jump{
public abstract void jumpping();//默认修饰public abstract,我手动给上
}
abstract class Animal{
private String name;
private int age;
public Animal(){}
public void setName(String name){
this.name= name;
}
public void setAge(int age){
this.age= age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
//将eat功能定义为抽象方法
public abstract void eat();
}
class Cat extends Animal{
public Cat(){}
//重写eat方法
public void eat(){
System.out.println("猫吃鱼");
}
//添加自己新的功能
public void playGame(){
System.out.println("猫捉迷藏");
}
}
class JumpCat extends Cat implements Jump{
public JumpCat(){}
//实现接口
public void jumpping(){
System.out.println("猫会跳高");
}
}
class Dog extends Animal{
public Dog(){}
//重写eat方法
public void eat(){
System.out.println("狗吃肉");
}
//添加自己的新功能
public void lookDoor(){
System.out.println("狗看门");
}
}
class JumpDog extends Dog implements Jump{
public JumpDog(){}
//实现接口
public void jumpping(){
System.out.println("狗会跳高");
}
}
//测试类
class JumpCatDogDemo{
public static void main(String[] args){
//养只狗
Dog d= new Dog();
d.setName("酷酷");
d.setAge(2);
String dname= d.getName();
int dage= d.getAge();
System.out.println("我养了只小狗,它的名字叫:"+dname+",它今年:"+dage+"岁");
d.eat();
d.lookDoor();
System.out.println("---------");
//养只能跳高的狗
JumpDog jd= new JumpDog();
jd.setName("跳跳");
System.out.println("我养了只会跳高的小狗,它的名字叫:"+dname);
jd.eat();
jd.jumpping();
}
}
/*
程序测试结果:
我养了只小狗,它的名字叫:酷酷,它今年:2岁
狗吃肉
狗看门
---------
我养了只会跳高的小狗,它的名字叫:酷酷
狗吃肉
狗会跳高
*/