У меня есть два класса: Send
(суперкласс) и Message
(подкласс). Я хочу создать метод под названием Summary
который печатает имя пользователя (находится в суперклассе).
Я создал метод в классе getName
, называемом 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 в любом другом классе, поскольку этот метод отмечен как открытый (например, что я сделал в классе 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, как показано ниже, или просто скопировать основной метод и вставить его в свой класс сообщений:
Испытательный класс
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: я редактировал название вашего метода, чтобы следовать правилам именования
System.out.println("Adam");
в main
тогда?
Поместите свой основной статический void в метод сообщения и метод суммирования вызовов из этого метода.
{}
, чтобы отформатировать как код.