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你说得对,谢谢你的通知,我刚刚更新了我的答案