抽象类是一种模糊的概念, 用来描述一些代表通用概念的类。可以通过子类来重写抽象类的方法。
抽象类:
- 抽象类的修饰符:类i的四种修饰符a中,finaln由于不能被继承,所以很明显不能修饰抽象类
- 抽象类本身是不能进行实例化的,但是可以有匿名内部类,但它是有构造方法的
- 抽象类可以没有抽象方法,也可以有抽象方法
抽象方法
- 抽象方法一旦存在,那么它所属的类必须是抽象类
- 抽象方法的修饰符:抽象的、缺省的、共有的、受保护的
- 抽象方法没有方法体
抽象类的子类
- 子类必须重写抽象类的所有抽象方法,或者不重写、没有全部重写时子类必须变成抽象类
- 抽象子类可以正常调用父类非私有化成员
- 抽象类的子类不能调用自己的方法,但可以调用父类的方法
public class Fuxi {
public static void main(String[] args) {
Father fa2=new Dau();
Father fa1=new Son();
fa1.fa();//调用父类的方法
fa1.NotStaSF();
// fa1.so();//不能调用自己的方法
}
}
abstract class Father{
void fa() {//非抽象方法
System.out.println("这是father非静态方法!");
}
abstract void NotStaSF();//抽象方法没有方法体
}
class Son extends Father{
void NotStaSF() {//重写父类抽象类中所有抽象方法
System.out.println("这是被重写的son的非静态方法!");
}
public void soS() {
System.out.println("这是son的非静态方法!");
}
}
总结:
私有的、最终的、静态的不能修饰抽象类