抽象类
当我们创建一个父类时,有时我们并不需要或不确定在父类中实现具体的方法,而只是在在父类中规定子类要实现的功能时可以将父类创建成抽象类,创建相应的抽象方法,让子类继承并实现该抽象方法。
抽象类的创建格式
public abstruct class MyAbstructClass(){
publlic abstructvoid abstructMethod();
Public abstructint abstructMethod(int a);
}
抽象类的特点
抽象类是一种特殊的类他的内部可以包含抽象方法,抽象类不可以直接实例化对象(可以用匿名内部类的方式实现抽象类的实例化),但除此以外与普通类的功能是一样的,也具有继承和被继承能力,可以有成员变量,可以有普通的方法被子类继承,但抽象方法必须在抽象类中
继承抽象父类的子类必须实现父类的所有抽象方法(重写抽象方法时要去掉修饰符abstract),否则还子类还必须定义为抽象类
抽象方法不能与以下修饰符共存:
private:作为一个抽象类必须要有子类继承并实现其抽象方法,否则抽象类的存在就失去了意义,而private 修饰的方法和变量只有当前类可以访问,其他类均不可访问,抽象方法无法实现
final:final修饰的方法不允许被重写,修饰的变量不允许被重新赋值与抽象方法必须在子类中重写相违背;
static:static修饰的方法在对象创建之前就已经加载进方法区不用实例化即可以调用,与抽象方法的先在子类中实现后在由子类的对象调用相矛盾。
抽象类和抽象方法的继承和调用
抽象类由于包含抽象方法且不能实例化对象,必须建立一个子类对其进行继承以实现其其抽象方法,然后在主方法中实例化子类对象,利用子类对象调用抽象类创建出的抽象方法
例如:
public abstract class Staff {
int Id;
String name;
public void eat() {
System.out.println("吃吃吃!");
}
public abstract void work();
}
class SonAbstractClass extends Staff{
public void work() {
System.out.println(“这是子类实现的抽象父类的抽象方法”);
}
}
class AbstractTest {
public void main (String [] args){
SonAbstractClass sac=new SonAbstractClass();
sac.work();
}
}