我定义了一个超类,如下所示:
public class superClass{
private superClass superObj;
public superClass() {
}
public superClass(superClass superObj) {
this.superObj = superObj;
}
public start()...
public receive()..
我的子类就像;
public class subclass extends superclass {
@Override
public receive(){
........
}
public static void main(String args[]){
Superclass superTst = new Superclass(new subclass());
superTst.start();
...
}
在这里,我的子类实际上不是与超类的“是”关系。但是我想这样扩展,因为在超类中,我做了一些处理输出(超类产生新线程并进行处理,因此我可以在超类上获得输出),该输出必须由子类访问。
从理论上讲是正确的吗?
最佳答案
就像你提到的那样
子类实际上不是与超类的“是”关系
因此,我想您应该使用组合而不是继承,如下所示:
public class superClass{
private subclass subclassObj;
public superClass() {
}
public superClass(subclass subclassObj) {
this.subclassObj = subclassObj;
}
public start(){
//some code
}
public receive(){
subclassObj.receive(); // call subclass' receive() method
}
您的
subclass
可以像:public class subclass {
public receive(){
//some code
}
public static void main(String args[]){
Superclass superTst = new Superclass(new subclass());
superTst.start();
// ...
}
}
关于java - 将父类(super class)实例传递给其构造函数是更好的做法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36995651/