请教各位大侠为什么编译器老是显示无法覆盖Object的toString()方法 如题,我在编写代码的时候明明添加了“@Override”的标注了啊,可是编译器仍然说无法覆盖Object的toString()方法,请教各位大侠有什么办法可以做到覆盖的?谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码贴出来了,如下public class AnimalInheritance { public static void main(String[] args) { Spaniel aSpaniel=new Spaniel("Puppy"); System.out.println("Here are the information of aSpaniel\n"); System.out.println(aSpaniel.ToString()); System.out.println("Before type casting, the class of aSpaniel is "+aSpaniel.getClass().getName()); Animal anAnimal=(Animal)aSpaniel;//A System.out.println("After type casting, the class of aSpaniel is "+aSpaniel.getClass().getName()); System.out.println("And the class of anAnimal is "+anAnimal.getClass().getName()); }}class Animal{ private String type; Animal(String tname){ type=tname; } Animal(Animal ani){ type=ani.type; } //@Override String toString(){ //B return "This is a "+type; }}class Dog extends Animal{ protected String breed; protected String name; Dog(String br, String na){ super("dog"); breed=br; name=na; } Dog(Dog adog){ super(adog); name=adog.name; breed=adog.breed; } Dog(String br){ super("dog"); breed=br; name="Unknown"; } //@Override String toString(){ //C return super.toString()+"\nIt's a "+name+" the "+breed; }}class Spaniel extends Dog{ Spaniel(String na){ super("Spaniel"); name=na; } Spaniel(Spaniel aSpa){ super("Spaniel"); } //@Override String toString(){ //D return super.toString(); }}B、C、D三行就是编译器提示出错的地方,另外我发现A行经过一个类型转换之后指向的对象还是Spaniel类型,请问大侠,如果这样做,类型转换还有什么意义? 明显是方法写错了......如果是eclipse,使用快捷键alt+shift+s,选择override/implement methods,找toString方法,会帮你自动生成好 是这里么?//@OverrideString toString(){ //Creturn super.toString()+"\nIt's a "+name+" the "+breed;}你这种写法修改了“可见度”,是不允许的,必须为:public String toString() { ......} 今天是12月13日 window 右上角的关闭按钮可以屏蔽吗? 请问从socket取得的InputStream的readLine()方法是不是自动阻塞的? Java程序员在北京找工作几天未果,希望朋友们给指点介绍一下! 求一java 电子表的程序 高分, 高难度问题, 请帮助(和classloader) 有关。 Swing的思考 请大家进来看看啊 现在大多公司企业大多用什么软件来开发java项目 谁有jsp记数器源码? 关于tomcat设置的问题简单 关于Java tcp的问题 很简单的多态的问题,求解答
Spaniel aSpaniel=new Spaniel("Puppy");
System.out.println("Here are the information of aSpaniel\n");
System.out.println(aSpaniel.ToString());
System.out.println("Before type casting, the class of aSpaniel is "+aSpaniel.getClass().getName());
Animal anAnimal=(Animal)aSpaniel;//A
System.out.println("After type casting, the class of aSpaniel is "+aSpaniel.getClass().getName());
System.out.println("And the class of anAnimal is "+anAnimal.getClass().getName());
}
}
class Animal{
private String type;
Animal(String tname){
type=tname;
}
Animal(Animal ani){
type=ani.type;
}
//@Override
String toString(){ //B
return "This is a "+type;
}
}class Dog extends Animal{
protected String breed;
protected String name;
Dog(String br, String na){
super("dog");
breed=br;
name=na;
}
Dog(Dog adog){
super(adog);
name=adog.name;
breed=adog.breed;
}
Dog(String br){
super("dog");
breed=br;
name="Unknown";
}
//@Override
String toString(){ //C
return super.toString()+"\nIt's a "+name+" the "+breed;
}}class Spaniel extends Dog{
Spaniel(String na){
super("Spaniel");
name=na;
}
Spaniel(Spaniel aSpa){
super("Spaniel"); }
//@Override
String toString(){ //D
return super.toString();
}
}B、C、D三行就是编译器提示出错的地方,另外我发现A行经过一个类型转换之后指向的对象还是Spaniel类型,请问大侠,如果这样做,类型转换还有什么意义?
如果是eclipse,使用快捷键alt+shift+s,选择override/implement methods,找toString方法,会帮你自动生成好
//@Override
String toString(){ //C
return super.toString()+"\nIt's a "+name+" the "+breed;
}
你这种写法修改了“可见度”,是不允许的,必须为:
public String toString() {
......
}