问题描述
importjava.io.*;publicclassJava6extendsBge{floatheight;Java6(Stringnam,inta,chars,floathei){super(nam,a,s);height=hei;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex+"height:"+height);}publicstaticvoidmain(String[]args){Java6j1=newJava6("LK",25,'M',1.70f);j1.super.display();//1.这句出错了!!}}classBg{Stringname;intage;Bg(Stringnam,inta){name=nam;age=a;}voiddisplay(){System.out.println("name:"+name+"age:"+age);}}classBgeextendsBg{charsex;Bge(Stringnam,inta,chars){super(nam,a);sex=s;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex);}}1.j1.super.display();//1.这句出错了!!(为什么不能这么写??请说明!!!)2.请问,这时j1中有几个display()方法(分别是哪个类定义的)??Bg中定义的方法voiddisplay(),在Bg类中还有吗?Bge中定义的voiddisplay(),在Bge类中还有吗?有办法在main方法中调用类Bg和类Bge中的dispaly()方法吗??谢谢!!
解决方案
解决方案二:
package关于继承;importjava.io.*;publicclassJava6extendsBge{floatheight;Java6(Stringnam,inta,chars,floathei){super(nam,a,s);height=hei;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex+"height:"+height);}publicstaticvoidmain(String[]args){Java6j1=newJava6("LK",25,'M',1.70f);//j1.super.display();//1.这句出错了!!Bgb=newBg("LK",25);b.display();}}classBg{Stringname;intage;Bg(Stringnam,inta){name=nam;age=a;}voiddisplay(){System.out.println("name:"+name+"age:"+age);}}classBgeextendsBg{charsex;Bge(Stringnam,inta,chars){super(nam,a);sex=s;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex);}}
已经帮你改了!在java中没有这种写法:j1.super.display();如果父类中display方法是static修饰的,那么在main方法中可以通过super.display();来调父类的display();否则必须创建父类的对象,才能调用父类的display方法在构造方法中,可以通过super()来调用父类的构造方法
解决方案三:
importjava.io.*;publicclassJava6extendsBge{floatheight;Java6(Stringnam,inta,chars,floathei){super(nam,a,s);height=hei;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex+"height:"+height);}publicstaticvoidmain(String[]args){Java6j1=newJava6("LK",25,'M',1.70f);//j1.super.display();//1.这句出错了!!Bgb=newBg("LK",25);b.display();}}classBg{Stringname;intage;Bg(Stringnam,inta){name=nam;age=a;}voiddisplay(){System.out.println("name:"+name+"age:"+age);}}classBgeextendsBg{charsex;Bge(Stringnam,inta,chars){super(nam,a);sex=s;}voiddisplay(){System.out.println("name:"+name+"age:"+age+"sex:"+sex);}}
已经帮你改了!在java中没有这种写法:j1.super.display();如果父类中display方法是static修饰的,那么在main方法中可以通过super.display();来调父类的display();否则必须创建父类的对象,才能调用父类的display方法在构造方法中,可以通过super()来调用父类的构造方法
解决方案四:
voiddisplay(){super.display();//放在这里System.out.println("name:"+name+"age:"+age+"sex:"+sex+"height:"+height);}publicstaticvoidmain(String[]args){Java6j1=newJava6("LK",25,'M',1.70f);j1.display();//1.这句出错了!!}
2.请问,这时j1中有几个display()方法(分别是哪个类定义的)??1个Bg中定义的方法voiddisplay(),在Bg类中还有吗?1个Bge中定义的voiddisplay(),在Bge类中还有吗?1个有办法在main方法中调用类Bg和类Bge中的dispaly()方法吗??谢谢!!在子类没有重写dispaly方法,会调用父类的dispaly()方法个人意见!
解决方案五:
j1中只有一个自己的display方法,它的display方法覆盖了父类的display方法,但是可以通过super关键字来调用父类的display方法Bg中定义的方法voiddisplay()当然仍然在Bg中,只是在子类中看不到Bge定义的display同理通过在main方法中创建Bg类、Bge类的对象来调它们各自的display方法
解决方案六:
我也是新手,望各位看看我说的对不对,有继承,有方法重写,可以直接用父类引用指向子类对象的方法。——多态