public class Animal {
private String name;
private int age;
private String gender;
private int love;
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
//这个方法不做实现,目的是让各自子类自己实现
public void cure() {
}
public Animal(String name, int age, String gender, int love) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.love = love;
}
public Animal() {
}
}
----
public class Person {
private String name;
// 已存在的类也可以作为其他类的属性
private Dog dog;
private QQ qq;
private Cat cat;
//获取方法,使用时System.out.print(d.getName());
public String getName() {
return name;
}
//设置方法使用时要在新构造的方法下讲就是new下调用该方法,如d.setName("dada")
public void setName(String name) {
this.name = name;
}
public Dog getDog() {
return dog;
}
//设置方法使用时要在新构造的方法下讲就是new下调用该方法,如
public void setDog(Dog dog) {
this.dog = dog;
}
//获取方法,使用时System.out.print(Qq.);
public QQ getQq() {
return qq;
}
public void setQq(QQ qq) {
this.qq = qq;
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Person() {
// 无参构造方法
}
//创建全部参数构造方法
public Person(String name, Dog dog, QQ qq) {
this.name = name;
this.dog = dog;
this.qq = qq;
}
//创建唯一参数构造方法
public Person(String name) {
this.name = name;
}
/* //创建仅用于private Dog dog;的方法
public void cure(Dog dog) {
if (dog.getLove() < 60) {
System.out.println("打药");
System.out.println("辫子");
System.out.println("蜡烛");
dog.setLove(99);
}
}
//上下两个方法属于重载
public void cure(QQ qq) {
if(qq.getLove()< 60) {
System.out.println("充qq币");
System.out.println("华腾");
qq.setLove(90);
}
}
*/
//使用多态方式用父类引用,传递子类实例(传递子类对象)
public void cure(Animal animal) {
if (animal.getLove() < 60) {
//治疗方案交由各个动物去实现,所以给父类animal一个cure方法
animal.cure();
}
}
}
--------------------------------------------------------------------------------------------------------------
public class QQ extends Animal {
@Override
public void cure() {
System.out.println("充qq币");
System.out.println("华腾");
this.setLove(90);
}
}
-------------------------------------------------------------------------------------------------
public class Dog extends Animal {
@Override
public void cure() {
System.out.println("打药");
System.out.println("辫子");
System.out.println("蜡烛");
this.setLove(99);
}
}
-------------------------------------------------------------------------------
public class Cat extends Animal {
public void cure() {
System.out.println("撸猫");
System.out.println("撸猫");
System.out.println("撸猫");
this.setLove(90);
}
//生成一个由父类继承的有参构造函数,同时生成一个无参构造函数
public Cat(String name, int age, String gender, int love) {
super(name,age,gender,love);
}
public Cat() {
// TODO Auto-generated constructor stub
}
}
-----------------------------------------------------------------------------------------------------
public class Test {
public static void main(String[] args) {
Person oldwang = new Person("老王");
Dog d = new Dog();
d.setName("旺财");
d.setAge(5);
d.setGender("公");
d.setLove(30);
QQ qq = new QQ();
qq.setAge(6);
qq.setGender("母");
qq.setLove(50);
qq.setName("帝王企鹅");
Cat cat = new Cat("mimi", 3, "公", 30);
// 老王领养了狗
oldwang.setDog(d);
// 老王领养企鹅
oldwang.setQq(qq);
//老王领养猫
oldwang.setCat(cat);
//治疗狗
System.out.println("治疗前" + d.getLove());
oldwang.cure(d);
System.out.println("治疗后" + d.getLove());
//治疗企鹅
System.out.println("治疗前" + d.getLove());
oldwang.cure(qq);
System.out.println("治疗后" + d.getLove());
//治疗猫
System.out.println("治疗前" + cat.getLove());
oldwang.cure(cat);
System.out.println("治疗后" + cat.getLove());
}
}
---------------------------------------------------------------------------------------------