import java.io.*;
public class Java6 extends Bge
{
float height;
Java6(String nam,int a,char s,float hei)
{
super(nam,a,s);
height=hei;
}
void display()
{
System.out.println("name:"+name+" age:"+age+" sex:"+sex+" height:"+height);
}
public static void main(String[] args)
{
Java6 j1=new Java6("LK",25,'M',1.70f);
j1.super.display(); //1.这句出错了!!
}
}class Bg
{
String name;
int age;
Bg(String nam,int a)
{
name=nam;
age=a;
}
void display()
{
System.out.println("name:"+name+" age:"+age);
}
}class Bge extends Bg
{
char sex;
Bge(String nam,int a,char s)
{
super(nam,a);
sex=s;
}
void display()
{
System.out.println("name:"+name+" age:"+age+" sex:"+sex);
}
}
 1.j1.super.display(); //1.这句出错了!! (为什么不能这么写??请说明!!!) 2.请问,这时j1中有几个display()方法(分别是哪个类定义的)??Bg中定义的方法void display(),在Bg类中还有吗?Bge中定义的void display(),在Bge类中还有吗?有办法在main方法中调用类Bg和类Bge中的dispaly()方法吗??谢谢!!

解决方案 »

  1.   

    package 关于继承;import java.io.*;public class Java6 extends Bge {
    float height; Java6(String nam, int a, char s, float hei) {
    super(nam, a, s);
    height = hei;
    } void display() {
    System.out.println("name:" + name + " age:" + age + " sex:" + sex
    + " height:" + height);
    } public static void main(String[] args) {
    Java6 j1 = new Java6("LK", 25, 'M', 1.70f);
    //j1.super.display(); // 1.这句出错了!!
    Bg b = new Bg("LK", 25);
    b.display();
    }
    }class Bg {
    String name;
    int age; Bg(String nam, int a) {
    name = nam;
    age = a;
    } void display() {
    System.out.println("name:" + name + " age:" + age);
    }
    }class Bge extends Bg {
    char sex; Bge(String nam, int a, char s) {
    super(nam, a);
    sex = s;
    } void display() {
    System.out.println("name:" + name + " age:" + age + " sex:" + sex);
    }
    }已经帮你改了!
    在java中没有这种写法:j1.super.display();
    如果父类中display方法是static修饰的,那么在main方法中可以通过super.display();来调父类的display();否则必须创建父类的对象,才能调用父类的display方法
    在构造方法中,可以通过super()来调用父类的构造方法
      

  2.   

    import java.io.*;public class Java6 extends Bge {
    float height; Java6(String nam, int a, char s, float hei) {
    super(nam, a, s);
    height = hei;
    } void display() {
    System.out.println("name:" + name + " age:" + age + " sex:" + sex
    + " height:" + height);
    } public static void main(String[] args) {
    Java6 j1 = new Java6("LK", 25, 'M', 1.70f);
    //j1.super.display(); // 1.这句出错了!!
    Bg b = new Bg("LK", 25);
    b.display();
    }
    }class Bg {
    String name;
    int age; Bg(String nam, int a) {
    name = nam;
    age = a;
    } void display() {
    System.out.println("name:" + name + " age:" + age);
    }
    }class Bge extends Bg {
    char sex; Bge(String nam, int a, char s) {
    super(nam, a);
    sex = s;
    } void display() {
    System.out.println("name:" + name + " age:" + age + " sex:" + sex);
    }
    }已经帮你改了!
    在java中没有这种写法:j1.super.display();
    如果父类中display方法是static修饰的,那么在main方法中可以通过super.display();来调父类的display();否则必须创建父类的对象,才能调用父类的display方法
    在构造方法中,可以通过super()来调用父类的构造方法
      

  3.   


    void display() {
    super.display();//放在这里
    System.out.println("name:" + name + " age:" + age + " sex:" + sex
    + "height:" + height);
    } public static void main(String[] args) {
    Java6 j1 = new Java6("LK", 25, 'M', 1.70f);
    j1.display(); // 1.这句出错了!!
    }2.请问,这时j1中有几个display()方法(分别是哪个类定义的)??
    1个
    Bg中定义的方法void display(),在Bg类中还有吗?
    1个
    Bge中定义的void display(),在Bge类中还有吗?
    1个
    有办法在main方法中调用类Bg和类Bge中的dispaly()方法吗??谢谢!!
    在子类没有重写dispaly方法,会调用父类的dispaly()方法个人意见!
      

  4.   

    j1中只有一个自己的display方法,它的display方法覆盖了父类的display方法,但是可以通过super关键字来调用父类的display方法
    Bg中定义的方法void display()当然仍然在Bg中,只是在子类中看不到
    Bge定义的display同理
    通过在main方法中创建Bg类、Bge类的对象来调它们各自的display方法