第二章第四天抽象类和抽象方法

抽象类:

概念:用abstract修饰的类就是抽象

抽象方法与抽象类的关系:

抽象方法必须在抽象类中;抽象类中可以有抽象方法,也可以没有。

作用:用来做“模板”,换言之也就是用来被继承

抽象类没有办法实例化。

抽象类就是一个普通类的变形,也有构造方法

抽象方法

概念:使用abstract修饰的方法,称为抽象方法

使用场景:一般都是在父类中定义抽象方法,大多数子类都有不同的实现时,就抽象,否则可以定义成实例方法

作用:约束子类行为

例一、将Pet修改为抽象类

需求说明:按照抽象方法的定义:

(1)抽象方法没有方法体;

(2)抽象方法必须在抽象类里;

(3)抽象方法必须在子类中被实现,除非子类是抽象类;

package day08.demo2;
/**
 * 猫类
 */
public class Cat extends Pet {
    public Cat() {
    }

    public Cat(String name, int healthy, int love, String variety) {
        super(name, healthy, love, variety);
    }
    /**
     * 治疗
     */
    @Override
    public void cure() {
        if(this.getHealthy()<=10){
            System.out.println("*********************************");
            System.out.println("吃药");
        }
    }
}
package day08.demo2;

public class Dog extends Pet {
    public Dog() {
    }

    public Dog(String name, int healthy, int love, String variety) {
        super(name, healthy, love, variety);
    }

    /**
     * 治疗
     */
    @Override
    public void cure() {
        if(this.getHealthy()<=10){
            System.out.println("*********************************");
            System.out.println("吃药");
        }
    }
}
package day08.demo2;
/**
 * 主人类
 */
public class Master {
    public void treatment(Pet pet){
        pet.cure();
    }
}
package day08.demo2;

/**
 * 宠物类
 */
public abstract class Pet {
    private String name;//宠物名字
    private int healthy;//健康值
    private int love;//亲密值
    private String variety; //品种

    public Pet() {
    }

    public Pet(String name, int healthy, int love, String variety) {
        this.name = name;
        this.healthy = healthy;
        this.love = love;
        this.variety = variety;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealthy() {
        return healthy;
    }

    public void setHealthy(int healthy) {
        this.healthy = healthy;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        this.love = love;
    }

    public Pet(String variety) {
        this.variety = variety;
    }

    /**
     *输出自白
     */
    public  void show(){
        System.out.println("宠物的自白:" + "\n我的名字叫" + this.getName() + ",我的健康值是" + this.getHealthy() + ",我和主人的亲密度是" + this.getLove() + "。"+"\n我是一只"+this.variety);
    }

    /**
     * 治疗
     */
    public abstract void cure();
}
package day08.demo2;



/**
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        Pet dog=new Dog("无名氏",10,20,"吉娃娃犬");
        dog.show();
        Master master=new Master();
        master.treatment(dog);
        System.out.println();
        Pet cat=new Cat("小白",60,20,"中国猫");
        cat.show();
        master.treatment(cat);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40115919/article/details/81365956