2013-02-14 60 views
1

我有延伸Socket类mysocket类..使用超类的实例构造子类

class MySocket extends Socket { 
    public int id; 
} 

现在我有我从接受的ServerSocket的方法得到了一个子类的实例(插座)。我如何使用这个Socket实例来构造我的MySockey实例?

+0

Java!= C++。类不以分号结尾。 – 2013-02-14 17:30:11

+0

我不确定你的意思。你确定你真的想要一个'Socket'子类吗? – 2013-02-14 17:30:13

+3

为什么要扩展Socket类?考虑换行。阅读本文:http://www.artima.com/designtechniques/compoinh.html – 2013-02-14 17:33:30

回答

1

你从哪儿找个Socket所以你最好使用一个包装的id添加到它,像:

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

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

0

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

希望这会有所帮助。

+0

我知道你说的是对的。 。但我需要知道如何在子类化方法中执行此操作.. – suresh 2013-02-14 18:18:49

+0

@suresh:由于您在扩展Socket类,所以您可以在您的类中有一个构造函数,它将接受一些参数,然后从该构造函数中调用一个调用通过传递一些必需的/不需要的参数给super。 – ankurtr 2013-02-15 05:34:06