抽象函数:只有函数定义,没有函数体的函数;一般用于子类重写。
格式:abstract void fun();
抽象类:使用abstract定义的类称为抽象类(基类),一般用于父类,在子类中重写其方法。
1.抽象类不能够生成对象;
2.如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类;
3.如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类:当某个类不想被生成对象时,可以将该类声明为抽象类;
4.抽象类可以有构造函数,其构造函数主要是在生成子类对象的时候被调用。
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("这是抽象函数的构造函数");
}
void introduce(){
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
abstract void eat();
}
class Chinese extends Person{
String address;
Chinese(){
System.out.println("Chinese的构造函数");
}
Chinese(String name,int age,String address){
super(name,age);
this.address=address;
//System.out.println("我的名字是什么"+name+",我的年龄是什么"+age+",我的家在"+address);
}
void eat(){
System.out.println("用筷子吃饭");//调用重写后的方法
}
}
class Test{
public static void main(String args []){
Person p=new Chinese("zhangsan",18,"北京");
p.eat();
System.out.println(p.name);
System.out.println(p.age);
//System.out.println(p.address); 向上转型中,父类的引用不能调用子类的成员变量
}
}