猫狗案例,加入跳高的额外功能
分析:从具体到抽象
猫:
姓名,年龄
吃饭睡觉
狗:
姓名,年龄
吃饭睡觉
由于有共性功能。所以我们抽取出一个父类:
动物:
姓名,年龄
吃饭();
睡觉(){}
猫:继承自动物
狗:继承自动物
跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口
跳高
部分猫:实现跳高
部分狗:实现跳高
动物:
姓名,年龄
吃饭();
睡觉(){}
猫:继承自动物
狗:继承自动物
跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口跳高
部分猫:实现跳高
部分狗:实现跳高
interface Jump{
public abstract void Jump();
}
abstract class Animal{
private String name;
private int age;
public Animal() {}
public Animal(String name,int age) {
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 abstract void eat();
public void Sleep() {
System.out.println("睡觉觉啦");
}
}
class Cat extends Animal{
public Cat() {}
public Cat(String name,int age) {
super(name,age);
}
public void eat() {
System.out.println("猫吃鱼");
}
}
class Dog extends Animal{
public Dog() {}
public Dog(String name,int age) {
super(name,age);
}
public void eat() {
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("跳高狗");
}
}
class InterFaceDemo2 {
public static void main (String[] args) {
//具体实现
//猫实现
JumpCat jc = new JumpCat();
jc.setName("加菲");
jc.setAge(11);
System.out.println(jc.getName()+"-----"+jc.getAge());
jc.eat();
jc.Sleep();
jc.Jump();
}
}
运行结果(狗狗那个跟跳高猫是一样的,只是没调用):
加菲-----11
猫吃鱼
睡觉觉啦
跳高猫