函数由函数的定义(返回值类型、函数名和参数列表)和函数体构成。
抽象函数:只有函数的定义,没有函数体,使用abstract关键字定义。如
abstract void fun();
错误原因:在一个类当中拥有一个或多个抽象函数,那这个类必须定义为抽象类。
什么是抽象类?
使用abstract定义的类叫做抽象类(基类)。
[1] 不能调用抽象类的构造函数从而生成抽象类的对象。
[2] 一个类当中包含抽象函数,那么这个类必须是抽象类。
[3] 一个类当中没有抽象函数,那么这个类也可以是抽象类。
抽象类的作用:用于被继承,抽象类的子类可以生成对象
当子类继承了作为父类的抽象类后,由于抽象类的抽象函数也可以被继承,根据第[2]条需要把子类定义为抽象类,但这样还是不能生成对象,除此之外,可通过复写抽象函数来增加函数体,这样就可以生成对象了。
abstract class Person{ Person(){ System.out.println("Person的构造函数"); } abstract void eat();//抽象函数,也可以被继承 }
class Chinese extends Person{ Chinese(){ System.out.println("Chinese的构造函数"); } void eat(){ //复写 System.out.println("用筷子吃饭"); } }
class Test{ public static void main(String args[]){ Person p = new Chinese();//向上转型 p.eat(); } }
抽象类可以拥有构造函数吗??
虽然不能用new来调用抽象类的构造函数,但是抽象类的子类可以通过super来调用抽象类的构造函数,所以结论是可以的。
时间: 2024-12-15 13:25:34