作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我解释一下我的情况:
public class Car extends Vehicle{
public Car() { }
public Car(String model){
super(model);
AutoParts autoParts=new AutoParts(Car.this.getSuperClass); //get compile error here
}
}
public class AutoParts{
Vehicle _Vehicle;
public AutoParts() { }
public AutoParts(Vehile vehicle){
this._Vehicle=vehicle;
}
}
抱歉这个可怕的例子。但是在初始化期间,Ford ford=new Ford(Car.this.getSuperClass);
,我希望能够将父类(super class)的实例作为参数传递给构造函数。
我该怎么做?如何获取父类(super class)的实例?
**
类名,Ford
重命名为 AutoParts
最佳答案
第一个问题是为什么你特别想要一个父类(super class)的实例?我假设您不希望您的福特汽车访问汽车的其他成员(扩展车辆类),因为福特汽车可能是卡车。您可以像这样使用转换来实现此目的:
Ford ford=new Ford((Vehicle)this);
但是,如果您的 Car 中有任何方法重写(即“this”对象),这些方法仍将存在于您传递给 Ford 构造函数的 Vehicle 中,这是您想要的吗?
我认为我们在 OO 设计方面偏离了人迹罕至的轨道。 Ford 没有 Vehicle,所以有 Vehicle 字段是错误的。 Ford 是一种车辆,因此它应该扩展 Vehicle。另外,在创造汽车时,为什么一定要创造福特?汽车是福特,所以我会让 Car 类扩展福特(而不是相反,Jon Skeet,因为可能有福特卡车/摩托车等)
关于java - 如何在 Java 中获取 SuperClass 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963923/
我是一名优秀的程序员,十分优秀!