package cn.hp.demo;
/*
* 动物类
* 名字,吃的方法
* */
public abstract class Animal {
private String name;
/*
* 不明确是什么动物?吃的东西也不明确
* */
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.hp.demo;
/*
* 猫类
* 继承动物的属性和行为
* */
public class Cat extends Animal implements Jump{
/*
*猫吃鱼
* */
@Override
public void eat(){
System.out.println(super.getName()+"猫吃鱼");
}
@Override
public void jump() {
System.out.println(super.getName()+"像猫跳一样再跳高!!!");
}
}
package cn.hp.demo;
import java.util.List;
/*
* 狗类
* 共有属性和行为直接从动物类继承
* */
public class Dog extends Animal implements Jump{
/*
* 重写了父类的方法
* 由于父类方法不满足使用,根据子类的特性进行重写
* */
@Override
public void eat(){
System.out.println(super.getName()+"啃骨头");
}
@Override
public void jump() {
System.out.println(super.getName()+"像狗跳一样再跳高!!!");
}
}
package cn.hp.demo;
/*
* 饲养员
* 有一个动物园,有很多动物,需要吃饭,就需要一个饲养员
* */
public class Feeder {
private String name;
/*
* 喂狗的方法
* @param dog
* */
/*public void feed(Dog dog){
System.out.println(this.name+"喂"+dog.getName());
dog.eat();
}
public void feed(Cat cat){
System.out.println(this.name+"喂"+cat.getName());
cat.eat();
}*/
public void feed(Animal animal){
System.out.println(this.name+"喂"+animal.getName());
animal.eat();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.hp.demo;
/*
* 接口
* 接口内只能有静态常量
* public static final 默认修饰符
* 接口内的方法都是抽象方法
* public abstract 默认修饰符
* */
public interface Jump {
void jump();
}
package cn.hp.demo;
public class Test {
public static void main(String[] args) {
//创建Dog类对象
Dog dog = new Dog();
dog.setName("旺财");
//dog.eat();
//dog.jump();
//创建猫类对象
Cat cat = new Cat();
cat.setName("花花");
//cat.eat();
//cat.jump();
Tiger tiger = new Tiger();
tiger.setName("辛巴");
//tiger.eat();
//tiger.jump();
//创建一个饲养员对象
Feeder feeder = new Feeder();
feeder.setName("马子伟");
//饲养动物
feeder.feed(dog);
feeder.feed(cat);
feeder.feed(tiger);
}
}
package cn.hp.demo;
public class Tiger extends Animal implements Jump{
@Override
public void eat() {
System.out.println(super.getName()+"吃羊");
}
@Override
public void jump() {
System.out.println(super.getName()+"像老虎一样跳");
}
}