对于abstract类而言,并非所有方法都是抽象的。它可以有实在的数据和方法。比如说消息这个抽象类,总有一个发送者,这个发送者是实际存在的,在消息的构造函数中就可以指定发送者,对吧?不管以后它的子类如何extends,总之都会有一个发送者的,因为是父类定义好了的,在子类的构造函数中super时就可以调用了。

解决方案 »

  1.   

    允许啊!抽象类的所有数据和方法不一定都不需要实例化啊!抽象类的构造方法可以完成必要的初始化!它的子类就可以直接调用父类的构造函数了,然后再完成自己扩展的初始化啊,而且你的说法也不对啊,抽象类不是不能被实例化的类,而是不能“直接”实例化的类。还是给一个例子:
    class test0{
    public test0() {
    System.out.println("test0");
    }
    }
    abstract class test1 extends test0{
             String ex1;
    public test1() {
    super();
                      ex1="ex1";
    System.out.println("test1");
    }
    }
    public class test extends test1{
             String ex2;
    public test() {
    super();
                      ex2="ex2";
    System.out.println("test");
    }
    public static void main(String args[]) {
    test1 t=new test();
    }
    }