Java 继承类中的字符串连接
我有一个名为a的类,其中声明了一个字符串。我还有另外两个类B和C,它们是从A继承的 测试代码:Java 继承类中的字符串连接,java,string,Java,String,我有一个名为a的类,其中声明了一个字符串。我还有另外两个类B和C,它们是从A继承的 测试代码: A aa = new B(); aa.someMethod(); A aaa = new C(); aaa.someMethod(); 当我打印aaa.someMethod;-为什么没有附加B类和C类的字符串?我想把它们附加起来。如何做到这一点?Java中被重写的方法不会自动调用它们的超类父类。因此,在C子类中,调用someMethod不会从其父类A调用该方法,除非显式调用super pu
A aa = new B();
aa.someMethod();
A aaa = new C();
aaa.someMethod();
当我打印aaa.someMethod;-为什么没有附加B类和C类的字符串?我想把它们附加起来。如何做到这一点?Java中被重写的方法不会自动调用它们的超类父类。因此,在C子类中,调用someMethod不会从其父类A调用该方法,除非显式调用super
public class C extends A
public String someMethod(){
int i=9;
return ss+= super.someMethod()+"$"+i;
}
}
我假设您这样做是为了学习,否则这是一种非常糟糕的管理继承类及其属性的方法。/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/javac a.java B.java C.java Test.java
public class Test
{
public static void main(String pArgs[])
{
A aa = new B();
System.out.println(aa.someMethod());
A aaa = new C();
System.out.println(aaa.someMethod());
}
}
/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java测试
这里没什么奇怪的,B方法someMethod调用B方法,C方法someMethod调用C方法
文件A.java:
public abstract class A
{
protected String ss="";
public abstract String someMethod();
}
文件B.java
public class B extends A
{
public String someMethod()
{
int i=8;
return ss+="$"+i;
}
}
文件C.java
public class C extends A
{
public String someMethod()
{
int i=9;
return ss+="$"+i;
}
}
文件Test.java
public class Test
{
public static void main(String pArgs[])
{
A aa = new B();
System.out.println(aa.someMethod());
A aaa = new C();
System.out.println(aaa.someMethod());
}
}
请发布请发布真实代码。在java中没有inherit关键字,你的aa.someMethod;返回字符串,而不是打印。您需要在System.out.printlnaa.someMethod中移动调用以查看输出。我这样做了,但它只给出类C的方法的结果,而没有得到结果appended@sharonHwk.. 您希望它附加什么?请发布预期输出。还有,一定要把真正的代码贴在这里,否则我们会不断删除你的编译器错误,然后你会说,这是一个打字错误。但是C的父级是OP代码中的a类。你误读了吗?现在你正在调用一个抽象方法。注意,调用超类方法不是这里的问题。OP没有打印someMethod返回的结果,因此它什么也不做。因此,他可能认为它正在打印类A中声明的空字符串,而不是附加来自类C和B的值$+i。有趣的问题是。实际上,我猜OP想知道为什么不附加来自单独的B和C实例的字符串。但除非他提供最新消息,否则我将回答最“明智”的问题。
public class Test
{
public static void main(String pArgs[])
{
A aa = new B();
System.out.println(aa.someMethod());
A aaa = new C();
System.out.println(aaa.someMethod());
}
}