抽象类的作用
抽象类的作用类似于“模板”
其目的是方便开发人员根据抽象类的格式来修改和创建新类
抽象类主要用于继承,有利于程序的扩展
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;
}
@override
public double getPrice(){
return this.price;
}
@override
public String getAuthor(){
//TODO Auto-generated method stub
return "James";
}
}
子类必须实现抽象父类的所有抽象方法
public class EnglishBook extends Book{
@Override
public String getAuthor(){
return "Tom";
}
@Override
public 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修饰抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想