为什么抽象类的构造函数可以走到?解决思路

为什么抽象类的构造函数可以走到?
我们都知道抽象类的不能实例化,不能使用关键字   new   和构造函数一起使用,
我却发现,通过子类的   super()可以走到,为什么啊?
请看下面的代码:
package   com.test;

public   class   Test
{
public   static   void   main(String[]   args)
{
Student   s   =   new   Student();
}
}

abstract   class   Person
{
public   Person()
{
System.out.println( "抽象类的构造器 ");
}

public   abstract   void   display();
}

class   Student   extends   Person
{
public   Student()
{
//super();
}
public   void   display()
{

}
}

居然可以打印出:   抽象类的构造器,
但是   直接new就报错,为什么啊?

------解决方案--------------------
如果子类的构造方法中没有显示的调用父类的构造方法,则产生子类对象时,系统默认调用无参数构造方法,即
public Student()
{
//super();
}
中写不写super();都一样
感觉这个例子和抽象类没有关系啊
------解决方案--------------------
不能实例化并不代表不能有构造函数
------解决方案--------------------
假如一个类里包含了一个或多个抽象方法,类就必须指定成abstract
------解决方案--------------------
一个类没有构造方法,她会首先去父类找构造方法的,如果自己有构造方法,她首先调用的是自己的构造方法
------解决方案--------------------
Student 类new了,就有内存了
------解决方案--------------------
你说的有点道理,请问 此时 抽象类 有没有获得系统分配的内存???
?估计你把类的实例与类搞混了。
目前有一个子类的实例,同时也是一个完全实现了抽像类的实例。可以当成那个抽像类来看。
------解决方案--------------------
楼主想错了,抽象类是不可以直接被我们new出来,但是可以被它子类的构造函数调用
抽象只是代表它希望有人继承它,实现它的某些方法,并不是说,它永远不能被使用,类的初始化顺序你要清楚,
父类的静态成员,静态初始化块,子类静态成员,静态初始化块,父类成员变量,父类构造函数,子类成员变量,子类构造函数
------解决方案--------------------
abstract