在子类中创建从超类中打印出方法的方法



我有两个类,Send(超类)和Message(子类)。我想创建一个名为Summary的方法来打印用户名(在超类中找到)。

我在Send类中创建了一个名为getName的方法,但我不确定如何完成任务。

Send类:

public class Send {
    private String username;
    public static void main(String[] args) {
    }
    public void getName(){
        username = "Adam";
    }
}

Message类:

public class Message extends Send {
    private String message;
    public void summary(){
        System.out.println("Message post from" + getName());
    }
}

你的getter实际上是一个静态setter我想你想取代

public void getName(){
    username = "Adam";
}

public String getName(){
    return this.username;
}

public void setName(final String pUsername)
{
    this.username = pUsername;
}

然后在某处呼叫

super.setName("aNameToGive");

System.out.println(super.getName());

将打印aNameToGive

另外,你的设计很奇怪。我想你想把你的main放在Message课上。然后从那里启动一个constructor,然后在构造函数中调用您的新方法。如果你想从main调用方法,你必须将所有内容都更改为static,但这对这种工作来说是有害的。

类似的东西

public class Message extends Send {
    private String message;
    public Message(){
        super.setName("Adam");
        System.out.println(super.getName());
    }
    public static void main(String args[])
    {
        new Message();
    }
}

public class Send {
    private String username;
    public void setName(final String pUsername)
    {
        this.username = pUsername;
    }
    public String getName(){
        return this.username;
    }
}

在下面的代码中,我在声明时初始化了用户名,您可以通过调用任何其他类中的setter方法来修改该名称,因为该方法被标记为public(就像我在Test类中所做的那样)。

您可以通过运行test类来测试该代码:

发送类:

public class Send {
    private String username = "Adam";

    public String getUsername(){   
        retur username;
    }
    public Void setUsername(String username){ 
        this.username = username;
    }
}

消息类:

public class Message extends Send {
    private String message;
    public void getSummary(){
        System.out.println("Message post from" + getUsername());
    }
}

您可以使用外部类来调用下面的getSummary方法,或者只复制主方法并将其粘贴到Message类中:

测试类

public class Test {
    public static void main(String[] args) {

       Message msg = new Message();
       // you can add this method call to change the user name before printing it
       // msg.setUsername("Smith");
       msg.getSummary();
    }
}

注意:我编辑了您的方法命名,以便遵循命名约定

将静态void主类放入消息方法中,并从该方法调用summary方法。

最新更新