package cm.abstracts.limit;
//这个类用来测试:没有抽象方法的抽象类
public class CaseFthirtyNine {
public static void main(String[] args) {
//依靠对象的向上转型概念,可以通过子类完成抽象类的实例化对象操作
Aa a = new X();
a.print();
}
}
/** 抽象类的组成和普通类组成的最大区别只是在抽象方法的定义,但是由于抽象类和普通类使用以及定义的区别,如下细节可能会
被忽略。
1、抽象类里面由于会存在一些属性,那么在抽象类中一定会存在构造方法,目的是为属性初始化,并且子类对象实例化时依然
满足先执行父类构造再调用子类构造。
2、抽象类不能使用final定义,因为抽象类必须有子类,而final定义的类不能有子类。
3、抽象类中可以没有任何抽象方法,但是只要是抽象类,就不能直接使用关键字new实例化对象*/
//创建没有任何抽象方法的抽象类
abstract class Aa{
//创建抽象类中的一个普通方法
public void print() {
System.out.println("誓要出书!");
}
}
//抽象类必须有子类:创建一个抽象类的子类,子类不是抽象类,是普通类
class X extends Aa{
/** 如题,既然父类是没有任何抽象方法的抽象类,那么也就不必在子类中进行覆写抽象方法的操作 */
}
彦舜原创