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

时间:2015-02-05 20:24:21

标签: java inheritance subclass superclass

我有两个类,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());
    }
}

3 个答案:

答案 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方法。