一. 抽象类基础
使用abstract定义的类称为抽象类。
1. 抽象类不能够生成对象,但是它的子类可以生成对象;
2. 如果一个类中包含抽象函数,那么这个类必须被声明为抽象类;
3. 如果一个类当中没有抽象函数,这个类也可以被声明为抽象类。
//抽象类
abstract class Person{
Person(){
System.out.println("person");
}
Person(String name,int age){
this.name = name;
this.age = age;
}
String name;
int age;
void introduce(){
System.out.println("my name is" + name + ",my age is" + age);
}
abstract void eat();
}
//抽象类的子类
class Chinese extends Person{
String address;
Chinese(){
super();//抽象类的子类可以通过super来调用父类的构造函数;
System.out.println("Chinese");
}
Chinese(String name,int age,String address){
super(name,age);
this.address = address;
}
void eat(){
System.out.println("eat rice");
}
}
public class Test{
public static void main(String args[]){
Person p = new Chinese();
p.eat();
}
}
运行结果为
person
Chinese
eat rice
二. 为什么要用抽象类
1.父类为抽象类,把要子类来重写的函数定义为抽象函数,这样子类在继承的时候就必须重写抽象函数。如果没有重写,编译就会报错。这样就避免了因为粗心导致忘记重写的情况。