抽象类又不能被实例化,他的构造方法有用么?
如果被子类使用,那么构造出来的是子类还是父类呢?
package test;
public abstract class AbstractA {
private Integer id;
public AbstractA(Integer id) {
this.id = id;
System.out.println("抽象类构造方法");
}
}
class BBC extends AbstractA {
public BBC(Integer id) {
super(id);
System.out.println("具体类构造方法");
}
public static void main(String[] args) {
new BBC(1);
}
}
构造出来的是子类。
抽象类又不能被实例化,他的构造方法会先于具体类执行。
你的思路是没错的
抽象类的构造方法可以被子类调用,为子类初始化一些属性,抽象类的构造方法是无法直接构造实例的,只能在子类的构造方法里调用,那么构造出来的自然是子类
依赖倒置原则:依赖抽象类而不依赖子类。父类的引用指向子类的对象,具体的方法写在此类子类中。
public abstract class Speedservice{
// 抽象方法,不实现
abstract void speed();
}
class ChacheSpeedService extends Speedservice {
// 子类实现抽象方法
@Override
void speed() {
System.out.println("--------ChacheSpeedService-----------");
}
}
class Aaaa{
//注入抽象类
Speedservice speedservice;
public Speedservice getSpeedservice() {
return speedservice;
}
public void setSpeedservice(Speedservice speedservice) {
this.speedservice = speedservice;
}
//测试方法
void cs(){
//调用抽象方法,具体的实现由设置的子类实现
this.speedservice.speed();
}
public static void main(String[] args) {
Speedservice chacheSpeedService = new ChacheSpeedService();
Aaaa aaaa = new Aaaa();
aaaa.setSpeedservice(chacheSpeedService);
aaaa.cs();
}
}
希望对你有帮助!