我有两个类,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方法。