Java 用构造函数扩展类

Java 用构造函数扩展类,java,class,constructor,Java,Class,Constructor,嘿,伙计们,我有一门课叫client。我想把它的函数分成两个子类:ClientListner和ClientSender。客户端自身有一个如下所示的构造函数: 客户端构造函数 public Client(Socket socket, PrintWriter pw, Scanner input, MainGui mg){ this.mg = mg; this.socket = socket; this.input = input; this.pw = pw; } p

嘿,伙计们,我有一门课叫client。我想把它的函数分成两个子类:ClientListner和ClientSender。客户端自身有一个如下所示的构造函数:

客户端构造函数

public Client(Socket socket, PrintWriter pw, Scanner input, MainGui mg){
    this.mg = mg;
    this.socket = socket;
    this.input = input;
    this.pw = pw;
}
public ClientSender(Socket socket, PrintWriter pw, Scanner input, MainGui mg) {
    super(socket, pw, input, mg);
    // TODO Auto-generated constructor stub
}
当我的另外两个类扩展此客户机Eclipse时,请让我实现construcktor并自动生成以下内容:

ClientSender自动生成构造函数

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

所以当我在Gui中,想要创建一个新的Clientlistner时,我必须传递所有这些信息,难道没有办法避免吗?如果是这样,怎么做?

如果你不想在构造函数中传递任何东西,你可以在父类中有一个
无arg
构造函数

编辑: 在您的
客户机
类中,只需编写此代码,它是一个
无参数
构造函数:

public Client(){

}

如果不想在构造函数中传递任何内容,可以在父类中使用
no arg
构造函数

编辑: 在您的
客户机
类中,只需编写此代码,它是一个
无参数
构造函数:

public Client(){

}

假设您希望使用
ClientSender
来处理所有传出内容,使用
ClientReceiver
来处理
客户机的所有传入内容,则它们应该是不同的类,在创建客户机后接受套接字的
OutputStream
InputStream
。因此,它们应该是客户端类中的成员,而不是客户端的子类型。

假设您希望使用
ClientSender
处理所有传出内容,并使用
ClientReceiver
处理
客户端的所有传入内容,它们应该是不同的类,在创建客户机后接受套接字的
OutputStream
InputStream
。因此,它们应该是客户机类中的成员,而不是客户机的子类型。

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

我会删除客户端构造函数中的变量,这样它只包含ClientListner和ClientSender都使用的变量

只需在
客户机
类中定义一个0-arg构造函数,然后就可以在所有派生类中使用任何构造函数。但是请注意,初始化基类字段为null会有风险,只需在
客户机
类中定义一个0-arg构造函数,然后就可以在所有派生类中使用任何构造函数。但请注意,将基类字段初始化为null会有风险