我有5个类,即c1,c2,c3,container,main在同一个包中。
从主类开始,我将打印c1,c2的类名。 c3是c1和c2的超类。
我想打印为
我的名字是c1
我的名字是c2
超级班是c3
但它只打印
我的名字是c3
我的名字是c3
超级是主要的
这是我的主要课程
class main{
public static void main(String[] argh) {
Container cont= new Container();
c3 o1 = cont.getc3("c1");
c3 o2 = cont.getc3("c2");
System.out.println("My name is: " + o1.getClass().getName());
System.out.println("My name is: " + o2.getClass().getName());
System.out.println("Our superclass is: " + o1.getClass().getSuperclass().getName());
}
}
这是我的容器类
class container extends main {
private String name;
public c3 getc3(String string) {
// TODO Auto-generated method stub
return new c3(string);
}
public String getName() {
System.out.println("-------------------------"+name);
return name;
}
public String toString() {
return getName();
}
}
这是c3类,它是超类
class c3 extends main {
private String name;
private String string1;
public c3(String string1) {
string1 = string1;
}
public String getName() {
return name;
}
public String toString() {
return getName();
}
public String getString1() {
return string1;
}
public void setString1(String string1) {
this.string1 = string1;
}
}
这是c1类
class c1 extends c3{
public c1(String string1) {
super(string1);
// TODO Auto-generated constructor stub
}
}
这里是c2
class c1 extends c3{
public c2(String string1) {
super(string1);
// TODO Auto-generated constructor stub
}
}
答案 0 :(得分:0)
您的getc3
方法返回c3
类的对象。你传递给弦乐“c1”和“c2”的事实没有什么区别。
如果您希望返回public c3 getc3(String string)
或c1
的等值,则必须更改c2
的实施。例如:
public c3 getc3(String string) {
if (string.equals("c1"))
return new c1(string);
else if (string.equals("c2"))
return new c2(string);
else
return new c3(string);
}