抽象函数和抽象类

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

抽象函数:只有函数的定义,没有函数体,使用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

抽象函数和抽象类的相关文章

JAVA – 虚函数、抽象函数、抽象类、接口

1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为.如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数 PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了. 2. Java抽象函数(纯虚函数) 抽象函数或者说是纯虚函数的存在是为了定义接口. C++中纯虚函数形式为:virtual void print(

JAVA 虚函数 抽象函数 抽象类 接口

1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为.如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数 PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了. 2. Java抽象函数(纯虚函数) 抽象函数或者说是纯虚函数的存在是为了定义接口. C++中纯虚函数形式为:virtual void print(

java:抽象类和抽象函数

面向对象:先抽象后具体 抽象类也叫基类 抽象函数:只有函数的定义,没有函数体的函数, 语法:类必须定义为抽象类,才能调用抽象函数,抽象类里面可以没有抽象函数 abstract class Printer { abstract void fun(); } 抽象类不能生成对象,而抽象类通常被继承, 继承的使用方法: abstract class HPprinter extends Printer{ //把子类定义为抽象类 } 或: class HPprinter extends Printer{ v

Java4Android基础学习之抽象类与抽象函数

1.抽象类与抽象函数 1)抽象类的定义 ,在类前加关键字abstract,如: abstract class test{ } 2)抽象函数的定义,在函数前加关键字abstract,如: abstract class test{ abstract void functoin(); } 2.抽象函数与抽象类的特点 1)抽象函数只有函数定义没有函数体,如上面那段代码,只有 function 的定义,但是并没有内容: 2)如果抽象类中有一个或多个抽象函数,那么这个类必须定义成抽象类: 3)抽象类天生就是

C++学习基础十二——纯虚函数与抽象类

一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数. 4.虚函数与纯虚函数的声明: virtual void draw();//虚函数 virtual void draw() = 0;//纯虚函数 5.C++中支持两种多态性: 编译时多态:通过重载函数实现. 运行时多态:通过虚函数实现. 二.Jav

面向对象——抽象类

当描述事物的时候,没有足够的信息对该事物进行描述,那么该描述对应得嘞就是一个抽象类. 1.没有方法铁定方法是抽象方法,一定定义在抽象类中 2.抽象类和抽象方法必须用abstract关键字修饰 3.抽象类可以不被实例化,因为抽象方法没有意义 4.抽象类必须由其子类覆盖掉所有的抽象方法之后,其子类才可以进行实例化,否则盖子类还是一个抽象类. 细节问题: 1.抽象类是一个父类 2.抽象类是有构造函数的,因为是给子类对象提供初始化动作的 3.抽象类中可以不定义抽象方法. 4.抽象关键字不能和 final

深入浅出OOP(四): 多态和继承(抽象类)

在本文中,我们讨论OOP中的热点之一:抽象类.抽象类在各个编程语言中概念是一致的,但是C#稍微有些不一样.本文中我们会通过代码来实现抽象类,并一一进行解析. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时多态) 深入理解OOP(四):多态和继承(C#中的抽象类) 深入理解OOP(五):C#中的访问修饰符(Public/Private/Protected/Internal/Sealed/Cons

java抽象类学习

帮助文档 <=> API文档 <=> 程序说明文档 姓名,年龄,工号雇员类普通员工类经理类 abstract:抽象,即不具体,只能修饰类和方法,不能修饰变量等. 抽象方法:被abstract关键字修饰的方法,只有函数声明,没有函数体. 抽象类:被abstarct修饰的类. 形式上看,就是含有抽象方法的类,当然也可以一个抽象方法也没有,也可以将类修饰成抽象类,这样相当于禁止该类创建类对象. 意义上看,抽象类是指,对抽象类所描述的事物在分析时,发现有一部分功能的功能内容是不确定的,但功

2014/7/17

1.抽象函数和抽象类 (1)抽象函数:就是只有声明没有实现的函数,称之为抽象函数,在java中抽象函数前面加abstract . 在定义函数类型时,需要被覆盖的函数,一般称为抽象函数. (2)抽象类:有抽象函数的类,称之为抽象类.(可以有不是抽象类的函数) 2.在继承关系中,注意: (1)java中只能进行单继承. (2)继承关系的相关类,必须是"is  a".也就是说作为子类必须是父类型的一种. 3.接口:形式上说,所有的方法均为抽象函数,这时,我们就可以把类型定义成interfac