我有两个类,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());
}
}
答案 0 :(得分:1)
您的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;
}
}
答案 1 :(得分:1)
在下面的代码中,我在声明时刻初始化了用户名,您可以通过调用任何其他类中的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方法,如下所示,或者只是复制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:我编辑了您的方法命名以遵循命名惯例
答案 2 :(得分:0)
将static void main类放在message方法中,并从该方法调用summary方法。