2012-10-20 145 views
1

嗨,我有一个叫做客户端的类。我想把它的功能分成两个子类:ClientListner和ClientSender。客户端它的自我有一个构造函数,看起来像这样:用构造函数扩展一个类

客户构造

public Client(Socket socket, PrintWriter pw, Scanner input, MainGui mg){ 
    this.mg = mg; 
    this.socket = socket; 
    this.input = input; 
    this.pw = pw; 
} 

当过我的两个其他类扩展了该客户端的Eclipse问我实现construcktor和自动生成以下:

ClientSender自动生成的构造

public ClientSender(Socket socket, PrintWriter pw, Scanner input, MainGui mg) { 
    super(socket, pw, input, mg); 
    // TODO Auto-generated constructor stub 
} 

因此,当我在我的Gui并想创建一个新的Clientlistner时,我必须通过所有这些信息,但还没有办法避免这种情况?如果是的话如何?

+0

只需在你的'Client'类中定义一个0-参数构造函数,然后就可以在所有派生类中使用任何构造函数。但是,请注意,您将面临初始化基类字段为空的风险 –

+0

我该怎么做? –

回答

1

如果您不想在构造函数中传递任何东西,您可以在父类中使用no-arg构造函数。

编辑: 在你Client类只写这段代码是一个no-arg构造:

public Client(){ 

} 
+0

我该怎么做? :s –

+0

看到我编辑的答案 – Abubakkar

+0

谢谢:)我会试试看 –

0

假设你想使用ClientSender来处理所有传出的内容和ClientReceiver来处理Client的所有传入内容,一旦创建客户端,它们应该是不同的类,它们接受套接字的OutputStreamInputStream。所以,他们应该是Client类中的成员,而不是客户端的子类型。

0

我将删除客户端构造函数中的变量,以便它只包含ClientListner和ClientSender使用的变量。

相关问题