首页 > 代码库 > 抽象函数和抽象类

抽象函数和抽象类

函数由函数的定义(返回值类型、函数名和参数列表)和函数体构成。

抽象函数:只有函数的定义,没有函数体,使用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来调用抽象类的构造函数,所以结论是可以的。

 

抽象函数和抽象类