抽象类的特征:
包含一个抽象方法的类必须是抽象类抽象类和抽象方法都要使用abstract关键字声明抽象方法只需声明不需要实现抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。抽象类的定义比普通类多了一些抽象方法,其他地方与普通类的组成基本上一样。不同点在于抽象类不能直接实例化,但是抽象类中可以包含构造方法。
抽象类的应用-模板设计 想象这么一个场景:动物分为好多种,现在拿出来猫和狗,猫会喵喵喵叫,狗会汪汪汪叫。现在我们抽象出来一个Animal类,根据动物的不同发出的叫声不同。 抽象类Animal
abstract class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } //普通方法 public void say(){ this.getContent(); } //抽象方法 public abstract void getContent(); }Dog
public class Dog extends Animal { public Dog(String name){ super(name); } public void getContent(){ System.out.println(getName()+"汪汪汪"); } }Cat
public class Cat extends Animal { public Cat(String name){ super(name); } public void getContent(){ System.out.println(getName()+" 喵喵喵"); } }test:
@Test public void test(){ Animal a1 = new Dog("dog"); Animal a2 = new Cat("cat"); a1.say(); a2.say(); }result:
dog 汪汪汪 cat 喵喵喵