抽象类的作用

抽象类的作用类似于“模板”
其目的是方便开发人员根据抽象类的格式来修改和创建新类
抽象类主要用于继承,有利于程序的扩展

  1. public abstract class Book{
  2. public abstract String getAuthor();
  3. }

image.png
image.png

  1. public abstract class Book{
  2. public abstract String getAuthor();//有抽象方法的类,必须是抽象类
  3. public abstract double getPrice();//抽象方法不能用private,static,final进行修饰
  4. //抽象类可以没有抽象方法
  5. public void show(){
  6. System.out.println("书中自有黄金屋");
  7. }
  8. }

public abstract double getPrice();中abstract改为private,static,final都报错

所以抽象方法不能用private,static,final进行修饰

  1. public class ComputerBook extends Book{//子类必须实现抽象父类的所有抽象方法
  2. public ComputerBook(double,price){
  3. this.price = super.price + 10;
  4. }
  5. @override
  6. public double getPrice(){
  7. return this.price;
  8. }
  9. @override
  10. public String getAuthor(){
  11. //TODO Auto-generated method stub
  12. return "James";
  13. }
  14. }

子类必须实现抽象父类的所有抽象方法

  1. public class EnglishBook extends Book{
  2. @Override
  3. public String getAuthor(){
  4. return "Tom";
  5. }
  6. @Override
  7. public double getPrice(){
  8. return this.price;
  9. }
  10. }
  1. public class Test1{
  2. public static void main(String[] args){
  3. Book book1 = new ComputerBook(50);
  4. Book book2 = new EnglishBook(30);
  5. System.out.println("java书:"+book1.getPrice());
  6. System.out.println("英语书:"+book2.getPrice());
  7. }
  8. }

抽象类的特点

  • 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象
  • 抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的
  • 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
  • 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,不然编译无法通过而报错
  • 抽象类中的抽象方法不能用private、final、static修饰抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想