普通类不能包含抽象方法,抽象类可以包含抽象方法,抽象类不能直接实例化,普通类可以直接实例化。抽象类不能使用final修饰,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样彼此就会产生矛盾,所以final不能修饰抽象类。
在Java中,抽象类可以包含实例变量和实例初始化块。实例变量是类的成员变量,而实例初始化块是类定义中的代码块,它会在每次创建类的新实例时执行,且在构造器之前执行。下面是一个包含实例变量和实例初始化块的抽象类示例:
// 定义一个抽象类
public abstract class AbstractClassExample {
// 实例变量
protected int instanceVariable;
// 实例初始化块
{
instanceVariable = 10; // 在实例创建时初始化
System.out.println("Instance initialization block executed.");
}
// 抽象方法
public abstract void doSomething();
// 构造器
public AbstractClassExample() {
System.out.println("Constructor executed.");
}
}
// 定义一个子类,继承自AbstractClassExample,并实现抽象方法
public class SubclassExample extends AbstractClassExample {
// 实例初始化块
{
super.instanceVariable += 5; // 可以在子类的实例初始化块中访问和修改父类的实例