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

Java 在从超类打印出方法的子类中创建方法?,java,inheritance,subclass,superclass,Java,Inheritance,Subclass,Superclass,我有两个类,Send(超类)和Message(子类)。我想创建一个名为Summary的方法,用于打印用户名(位于超类中) 我在Send类中创建了一个名为getName的方法,但是我不确定如何完成任务 Sendclass: public class Send { private String username; public static void main(String[] args) { } public void getName(){ u

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

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

Send
class:

public class Send {
    private String username;

    public static void main(String[] args) {

    }

    public void getName(){
        username = "Adam";
    }
}
public class Message extends Send {
    private String message;

    public void summary(){
        System.out.println("Message post from" + getName());
    }
}
消息
类:

public class Send {
    private String username;

    public static void main(String[] args) {

    }

    public void getName(){
        username = "Adam";
    }
}
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";
}

然后找个地方打电话

super.setName("aNameToGive");

将打印
aNameToGive

而且,你的设计很奇怪。我想你应该把你的
main
放在
Message
类中。然后从那里启动一个
构造函数
,然后在构造函数中调用新方法。如果您想从
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();
    }
}


将静态void main类放在message方法中,并从该方法调用summary方法。

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

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

发送类:

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());

    }

}
消息类:

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方法,如下所示,或者只复制main方法并将其粘贴到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();

    }

}

NB:我编辑您的方法命名是为了遵循命名约定

我为布局道歉,我不完全确定发生了什么。请编辑,选择您的代码,然后单击
{}
按钮将其格式化为代码。消息正在扩展帖子,而不是像您所说的那样发送,你想在这里实现什么?现在你的
getName()
只是将username的值设置为“Adam”,它也被声明为“void”,因此不会返回任何内容。请注意,Java方法应该以小写字母开头。因此,将
Summary
更改为
Summary
。()他可能会得到想要的输出,但这根本不能教会OP一个好的设计。为什么不告诉他删除所有内容并调用
System.out.println(“Adam”)main
中,然后?我将尝试改进我的答案,但我认为这可能有助于他理解继承更多这甚至不起作用,您仍然只将username设置为“Adam”,而不返回任何内容,
System.out.println(“来自“+getUsername()的消息帖子”)
不会打印“Adam”@chancea你说得对,谢谢你的通知,我刚刚更新了我的答案