2 java inheritance implementation parent-child
我有4节课.一个是驱动程序类,一个是接口和两个子类.这是Interface类:
public interface Speaker {
public void speak();
public void announce(String announcement);
}
Run Code Online (Sandbox Code Playgroud)
这是驱动程序类:
public abstract class SpeakerDriver implements Speaker {
public static void main (String [] args) {
Speaker ref;
Politician poli = new Politician("George Bush");
Lecturer lect = new Lecturer("Professor Cross");
Pastor past = new Pastor ("P.M. Smith");
ref = poli;
ref = lect;
ref = past;
System.out.println();
System.out.println(lect);
System.out.println(past);
}
}
Run Code Online (Sandbox Code Playgroud)
这些是两个子类:
public class Pastor implements Speaker {
protected String announcement;
public Pastor (String name) {
}
@Override
public void speak() {
}
@Override
public void announce(String announc) {
System.out.println("I am the pastor at CCBC.");
}
}
public class Lecturer implements Speaker {
protected String announcement;
public Lecturer(String name) {
}
@Override
public void speak() {
}
@Override
public void announce(String announcement) {
System.out.println("I am the lecturer at CCBC");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我的实现有什么问题,使输出看起来像这样:
Lecturer@a90653 Pastor@de6ced
当它们应该包含println中的文本时.
您正在使用以下语句打印对象:
System.out.println(lect);
Run Code Online (Sandbox Code Playgroud)
你可能打算在对象上调用一个函数:
lect.announce();
Run Code Online (Sandbox Code Playgroud)
另请注意,您的驱动程序类实际上并不需要实现'Speaker'接口,而且以下语句中,前两个有效地完成了任何操作:
ref = poli;
ref = lect;
ref = past;
Run Code Online (Sandbox Code Playgroud)