抽象函数和抽象类

王朝学院·作者佚名  2016-05-29
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

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

为什么要使用抽象类?

如果把父类定义为抽象类,把要由子类来实现功能的函数定义为抽象函数,如果忘记复写就会产生语法错误。强制要求子类在继承父类时对这个抽象函数进行复写来减少错误。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航