一共写了5个类,分别是宠物类、小狗类、小猫类、主人类、测试类,其中宠物类是小狗类和小猫类的父类,主人类是为了实现宠物的喂养功能的,测试类是对主人类的喂养功能进行测试的,方法重写体现在小狗类和小猫类上,方法重载体现在主人类上
宠物类:
public class Pet {
private String nickname;
private int age;
private String color;
public Pet(String nickname, int age, String color) {
this.nickname = nickname;
this.age = age;
this.color = color;
}
public Pet() {
}
public void cute(){
System.out.println("宠物会卖萌");
}
public void eat(){
System.out.println("宠物会吃");
}
}
小狗类:
public class Dog extends Pet {
public Dog(String nickname, int age, String color) {
super(nickname, age, color);
}
public Dog() {
}
@Override
public void cute() {
System.out.println("小狗卖萌");
}
@Override
public void eat() {
System.out.println("小狗会吃");
}
}
小猫类:
public class Cat extends Pet {
public Cat(String nickname, int age, String color) {
super(nickname, age, color);
}
public Cat() {
}
@Override
public void cute() {
System.out.println("小猫卖萌");
}
@Override
public void eat() {
System.out.println("小猫会吃");
}
}
主人类:
public class Master {
public void feed(Dog dog){
dog.cute();
dog.eat();
}
public void feed(Cat cat){
cat.cute();
cat.eat();
}
}
测试类:
public class Test {
public static void main(String[] args) {
Master master = new Master();
master.feed(new Dog());
master.feed(new Cat());
}
}
扩展:
面向对象的OCP原则:
主人类:
public class Master {
public void feed(Pet pet){
pet.cute();
pet.eat();
}
}