继承
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; /* * * animal的子类 * 共有animal的属性和行为,无需定义,直接从animal继承 * */ public class Dog extends Animal{ /* * * 重写了父类的方法 * 由于父类的方法不满足使用,根据子类的特性进行重写 * */ @Override public void eat() { System.out.println(super.getName()+"啃骨头"); } }
package cn.hp.demo01; /* * * 继承 * Aniaml * */ public class Test { public static void main(String[] args) { //创建Dog类对象 Dog dog = new Dog(); dog.setName("小白"); dog.eat(); //创建Cat类对象 Cat cat = new Cat(); cat.setName("年年"); cat.eat(); } }
package cn.hp.demo01; /*猫类 * * 继承动物的属性和行为*/ public class Cat extends Animal{ /*猫吃鱼*/ @Override public void eat() { System.out.println(super.getName()+"吃小鱼"); } }
接口
package cn.hp.demo01; /* *接口:无参无返回值 * 接口类只能有静态常量 * public static final默认修饰符 * 接口内的方法都是抽象方法 * public abstract 默认修饰符 * */ public interface Jump { void jump(); }
多态
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; /* * * animal的子类 * 共有animal的属性和行为,无需定义,直接从animal继承 * */ 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 dog*/ //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 cat = new Cat(); cat.setName("年年"); //cat.eat(); //cat.jump(); //创建Cat类对象 tiger tiger1 = new tiger(); tiger1.setName("老虎"); //创建一个饲养员对象 Feeder feeder = new Feeder(); feeder.setName("焦文倩"); //饲养动物 feeder.feed(cat); feeder.feed(dog); feeder.feed(tiger1); } }