一、抽象函数
定义:只有函数的定义,没有函数体的函数被称为抽象函数。
abstract void fun();
二、抽象类
定义:使用abstract定义的类被称之为抽象类。
1、抽象类不能够生成对象(一旦生成对象,那么就可能调用到抽象类里面的抽象方法,但是抽象方法没有方法体,调用会有问题);
2、如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类;
3、如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。
4、抽象类可以有构造函数吗?可以
e.g.
//抽象类(大多作为基类)
abstract class Person {
String name;
int age;
Person() {
System.out.println("Person的构造函数");
}
Person(String name, int age) {
this.name = name;
this.age = age;
System.out.println("Person的构造函数");
}
void introduce() {
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
//抽象函数,可以被继承,防止子类忘记复写该方法
abstract void eat();
}
class Chinese extends Person {
String address;
//编译器会在构造方法里加上super();调用父类的构造函数
Chinese() {
System.out.println("Chinese的构造函数");
}
Chinese(String name, int age, String address) {
super(name, age);
this.address = address;
System.out.println("Chinese的构造函数");
}
//继承抽象类必须复写抽象函数,实现函数体
void eat() {
System.out.println("用筷子吃饭");
}
}
class Test {
public static void main (String args []) {
//编译报错,抽象类不能生成对象
//Person p = new Person();
Person p = new Chinese();
p.eat();
/** 输出:
Person的构造函数
Chinese的构造函数
用筷子吃饭
*/
}
}