抽象类:
概念:用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);
}
}