抽象类的作用
抽象类的作用类似于“模板”
其目的是方便开发人员根据抽象类的格式来修改和创建新类
抽象类主要用于继承,有利于程序的扩展
public abstract class Book{public abstract String getAuthor();}


public abstract class Book{public abstract String getAuthor();//有抽象方法的类,必须是抽象类public abstract double getPrice();//抽象方法不能用private,static,final进行修饰//抽象类可以没有抽象方法public void show(){System.out.println("书中自有黄金屋");}}
public abstract double getPrice();中abstract改为private,static,final都报错
所以抽象方法不能用private,static,final进行修饰
public class ComputerBook extends Book{//子类必须实现抽象父类的所有抽象方法public ComputerBook(double,price){this.price = super.price + 10;}@overridepublic double getPrice(){return this.price;}@overridepublic String getAuthor(){//TODO Auto-generated method stubreturn "James";}}
子类必须实现抽象父类的所有抽象方法
public class EnglishBook extends Book{@Overridepublic String getAuthor(){return "Tom";}@Overridepublic double getPrice(){return this.price;}}
public class Test1{public static void main(String[] args){Book book1 = new ComputerBook(50);Book book2 = new EnglishBook(30);System.out.println("java书:"+book1.getPrice());System.out.println("英语书:"+book2.getPrice());}}
抽象类的特点
- 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象
- 抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的
- 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,不然编译无法通过而报错
- 抽象类中的抽象方法不能用private、final、static修饰抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想
