package cn.hp.demo01;
/**
* 动物类
* 名字、吃的方法
*/
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.demo01;
/**
* 猫类
* 继承动物类的属性和行为
*/
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.demo01;
import java.util.ArrayList;
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.demo01;
/**
* 饲养员
* 有一个动物园,有很多动物,需要吃饭,就需要一个饲养员
*/
public class Feeder {
private String name; //姓名
/**
* 喂狗的方法
* @param dog
public void feed(Dog dog){
System.out.println(this.name+"喂"+dog.getName());
dog.eat();
}*/
/**
* 喂猫的方法
* @param cat
public void feed(Cat cat){
System.out.println(this.name+"喂"+cat.getName());
cat.eat();
}*/
/**
* 喂动物的方法(找到了不同的子类的,共有的类型)
* @param animal
*/
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.demo01;
/**
* 接口
* 接口内只能有静态常量
* public static final 默认修饰符
* 接口内的方法都是抽象方法
* public abstract 默认修饰符
*/
public interface Jump {
void jump();
}
package cn.hp.demo01;
/**
* 继承
* Aniaml
* 子类:Dog Cat
*/
public class Test {
public static void main(String[] args) {
//创建Dog类对象
Dog dog = new Dog();
dog.setName("旺财");
//dog.eat();
//dog.jump();
//形态一
Dog d1 = dog;//狗类型
//形态二
Animal d2 = dog;//动物类型
//创建猫类对象
Cat cat = new Cat();
cat.setName("花花");
//cat.eat();
//cat.jump();
//创建一个饲养员对象
Feeder feeder = new Feeder();
feeder.setName("高金良");
//饲养动物
feeder.feed(dog);
feeder.feed(cat);
Tiger tiger = new Tiger();
tiger.setName("辛巴");
feeder.feed(tiger);
}
}
package cn.hp.demo01;
/**
* 老虎类
* 动物园新来了老虎
*/
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()+"像老虎跳一样跳");
}
}