抽象类
抽象类的声明 :abstract class Cat{}
抽象方法的声明(没有方法体):public abstract void eat();
抽象方法的 3 个特征如下:
- 抽象方法没有方法体
- 抽象方法必须存在于抽象类中
子类重写父类时,必须重写父类所有的抽象方法
注意:在使用 abstract
关键字修饰抽象方法时不能使用 private,final,static
修饰,因为抽象方法必须被子类重写,而如果使用了private,final,static
声明,则子类是无法重写的。
抽象类的定义和使用规则如下:
- 抽象类和抽象方法都要使用
abstract
关键字声明。 - 如果一个方法被声明为抽象的,那么这个类也必须声明为抽象的。而一个抽象类中,可以有 0~n 个抽象方法,以及 0~n 个具体方法。
- 抽象类不能实例化,也就是不能使用
new
关键字创建对象。
package abstract_;
public class Abstract03 {
public static void main(String[] args) {
}
}
/**
* 1.抽象类可以有任意成员(本质还是类)
* 2.可以使用非抽象方法,构造器,静态属性
* 3.如果一类继承抽象类就必须实现所有的抽象方法,除非它自己也声明为abstract类
*/
abstract class E extends D{
}
class F extends D{
@Override
public void hello() {//F子类实现了F父类的hello()抽象方法
}
}
abstract class D{
public int n1 = 10;
public static String name = "美好的事情即将发生";
//这是一个静态方法
public static void ok(){
System.out.println("这是一个静态方法");
}
public void hi(){
System.out.println("这是一个非抽象的方法");
}
//这是一个抽象方法
public abstract void hello();
// public D(int n1) {
// System.out.println("D有参构造器");
// this.n1 = n1;
// }
}