Java 利用超类实例构造子类

Java 利用超类实例构造子类,java,sockets,Java,Sockets,我有一个mysocket类,它扩展了Socket类 class MySocket extends Socket { public int id; } 现在我有了一个子类实例(Socket),它是从ServerSocket的accept方法获得的。如何使用此套接字实例构造MySockey实例?您从某处获得一个套接字,因此最好使用包装器向其添加id,例如: public class SocketWrapper { private Socket socket; private

我有一个mysocket类,它扩展了Socket类

class MySocket extends Socket {
    public int id;
}

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

您从某处获得一个
套接字,因此最好使用包装器向其添加
id
,例如:

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

您从某处获得了一个
套接字
,因此最好使用包装器向其添加
id
,例如:

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

我同意包装而不是扩展套接字的建议。但是,如果您决定继续扩展,请在子类中添加一个以套接字为参数的构造函数。将套接字方法委派给它。

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

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


希望这能有所帮助。

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


希望这有帮助。

Java!=C++。课程不会以分号结束。我不知道你的意思。你确定你真的想要一个
Socket
子类吗?为什么要扩展Socket类?考虑把它包装起来。阅读以下内容:如果我扩展套接字,我就不必在MySocket类中为套接字方法编写包装器..Java!=C++。课程不会以分号结束。我不知道你的意思。你确定你真的想要一个
Socket
子类吗?为什么要扩展Socket类?考虑把它包装起来。阅读:如果我扩展了Socket,我就不必在MySocket类中为Socket方法编写包装器。我知道你说的是对的。。但是我需要知道如何用子类化的方式来实现这一点。@suresh:既然你在扩展一个套接字类,你可以在你的类中有一个构造函数,它将接受一些参数,然后从该构造函数中你可以通过传递一些必需/非必需的参数来调用super。我知道你说的是对的。。但是我需要知道如何以子类化的方式来实现这一点。@suresh:由于您正在扩展一个套接字类,您可以在类中有一个构造函数,它将接受一些参数,然后从该构造函数中,您可以通过传递一些必需/非必需的参数来调用super。