public class Test { public static void main(String[] args) { /** * ----踩坑点1 * 抽象类里面能够有构造函数,并且能够通过new来创建对象 * 但是只能通过如下方式来创建对象 * 实际上运用了多态的特点 **/ Fu fu = new Fu() { @Override public void aa() { System.out.println(1); } }; /** * ----踩坑点2 * 在继承于抽象类的子类里面,子类的构造方法还是会默认调用父类的构造方法 * 但是不会创建父类对象 **/ Fu z1 = new Zi1(1); } } //-------结果------- //Fu类的无参构造方法 //1 //Fu类的有参构造方法 //Zi1类中的有参构造方法 public abstract class Fu { public Fu(){ System.out.println("Fu类的无参构造方法"); } public Fu(int a){ System.out.println("Fu类的有参构造方法"); } public abstract void aa(); public void bb(){ System.out.println("Fu"); } } public class Zi1 extends Fu { public Zi1(){ System.out.println("Zi1类中的无参构造方法"); } public Zi1(int a){ super(a); System.out.println("Zi1类中的有参构造方法"); } @Override public void aa() { System.out.println("Zi1"); } }