繁体   English   中英

使用超类实例构造子类

[英]constructing sub class using super class instance

我有mysocket类,它扩展了Socket类。

class MySocket extends Socket {
    public int id;
}

现在我有一个子类实例(套接字),它是从ServerSocket的accept方法获得的。 如何使用此Socket实例构造MySockey实例?

您可以从某个地方获得一个Socket ,因此最好使用包装器向其添加id ,例如:

public class SocketWrapper {
    private Socket socket;
    private int id;
    // getter, setter, ctors, ...
}

我同意包装而不是扩展Socket的建议。 但是,如果您决定继续使用扩展,请向您的子类添加一个以Socket作为参数的构造函数。 将Socket方法委托给它。

仅当您想向类本身添加一些其他功能时,对类进行子类化才有意义。 在您的情况下,您似乎只想使用套接字。 因此,@ RC建议的方法是正确的。 可以将Socket对象作为实例成员,而不是子类化Socket类,并且可以为其分配server.accept()返回类型。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM