1. 抽象类
1.1 抽象类概述
代码示例:
没有{}大括号的方法就是一个没有方法体的方法,要把它定义成抽象方法,就要给它加一个abstract关键字,而类中有抽象方法,该类也必须是一个抽象类,所以给类也加一个abstract关键字。
将方法体去掉是因为,动物类中的吃东西本身就是一个抽象的概念,你不知道吃的是什么东西,只知道吃东西。
所以干脆不写,让它在子类中被子类重写,而子类比如猫,它是可以具有到吃什么东西的,“猫吃老鼠” “猫吃耗子”,都是可以的。
1.2 抽象类的特点
1.3 抽象类的成员特点
1.4 案例:猫和狗
public abstract class AbstractAnimal { private String name; private int age; public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public AbstractAnimal(){ System.out.println("抽象类无参构造方法"); } public AbstractAnimal(String name,int age){ System.out.println("抽象类有参构造方法"); } public abstract void eat(); }
public class CatExtendsAbstract extends AbstractAnimal { public CatExtendsAbstract(){ super(); System.out.println("猫子类无参构造方法"); } public CatExtendsAbstract(String name, int age){ super(name, age); System.out.println("猫子类有参构造方法"); } public void eat(){ System.out.println("猫吃鱼"); } }
public class DogExtendsAbstract extends AbstractAnimal { public DogExtendsAbstract(){ System.out.println("狗子类无参构造方法"); } public DogExtendsAbstract(String name, int age){ System.out.println("狗子类有参构造方法"); } public void eat(){ System.out.println("狗吃骨头"); } }
public class AnimalAbstractDemo { public static void main(String[] args) { AbstractAnimal a = new CatExtendsAbstract(); a.eat(); AbstractAnimal b = new DogExtendsAbstract(); b.eat(); } }
输出:
抽象类无参构造方法
猫子类无参构造方法
猫吃鱼
抽象类无参构造方法
狗子类无参构造方法
狗吃骨头