JAVA抽象类(新手求解)

子类继承了一个抽象类,抽象类中没有无参构造函数,有有参构造。请问子类能实例化么?如果能,怎么做?

子类构造方法中使用super()传参,指定一个父类的构造器
假如父类构造器是private修饰的那就没办法继承了。

能,可以直接使用无参,也可以使用父类的有参构造

首先,你应该先了解继承的原理,继承的强大在于子类可以继承来自父类的一切可继承的特征和行为,更重要的是子类不仅仅可以继承来自父类的特征和行为,而且还具备自我扩展的能力。所以说,实例化的问题并不需要担心,如果你需要通过无参构造进行实例化,那么将子类扩展一下即可。这是我的个人理解,就跟人类进化一样,你继承了你祖辈的优点,同时你在生活中也可以扩展自己的优点,这样后代就会变得强大。

java抽象类的构造方法和普通类的构造方法一样,都是用来初始化类

只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例
但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其方法

可以这么理解吧 抽象类就是一个不能实例化的一个比较特别的类,不过如果方法加了abstract那么就必须在子类里面重写了
//父类
public abstract class TestAbstract {
public abstract void TestAbstract(String a,String b);
}

//子类
public class ChildAbstract extends TestAbstract {

public ChildAbstract(String a,String b){
    TestAbstract(a,b);
}

public void TestAbstract(String a, String b) {

}

}

//实例化类
public class InstantiationAbstract {
String a="传入参数a";
String b="传入参数b";

ChildAbstract child=new ChildAbstract(a,b);

}

上面的写的有点问题,看下面这个:

public abstract class TestAbstract {
public TestAbstract(String a,String b) {
}
}

public class ChildAbstract extends TestAbstract {

public ChildAbstract(String a,String b){
    super(a,b);     
}   

}

public class InstantiationAbstract {
String a="传入参数a";
String b="传入参数b";

ChildAbstract child=new ChildAbstract(a,b);

}