java中关于继承层次中的方法覆盖!!谢谢

问题描述

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方法
解决方案六:
我也是新手,望各位看看我说的对不对,有继承,有方法重写,可以直接用父类引用指向子类对象的方法。——多态

时间: 2024-11-05 19:32:36

java中关于继承层次中的方法覆盖!!谢谢的相关文章

【JAVA】关于继承关系中构造方法的问题

问题描述 父类Person,有无参构造方法Person(),和公用方法func().子类Teacher,有无参构造方法Teacher(),有参构造方法Teacher(int a)和公用方法func(). 代码如下: class Teacher extends Person {public Teacher() {super();}public Teacher(int a) {System.out.print(a);}public void func() {System.out.print("2,&

d-JAVA中,继承的类可以修改父类成员变量的值?

问题描述 JAVA中,继承的类可以修改父类成员变量的值? class FatherClass{ public int value; public void info(){ value=100; System.out.println("FatherClass="+value); } } class ChildClass extends FatherClass{ //public int value; public void info(){ super.info(); value=200;

浅析Java的Hibernate框架中的继承关系设计_java

这次我们来说一下hibernate的层次设计,层次设计也就是实体之间的继承关系的设计.  也许这样比较抽象,我们直接看例子.  1)我们先看一下普通的做法  直接上代码:三个实类如下: public class TItem implements Serializable{ //省略Get/Set方法 private int id; private String manufacture; private String name; } public class TBook extends TItem

JAVA 【引用类型】和【对象类型】在【继承】中的异同

介绍     JAVA [引用类型]和[对象类型]在[继承]中的异同,这个问题自己整理过N次,也被人当菜鸟问过N次.所以,在此简单整理一下,以供大家分享. 在继承关系中,一般成员变量是根据引用类型 在继承关系中,静态成员变量是根据引用类型 在继承关系中,一般方法是根据对象类型 在继承关系中,静态方法是根据引用类型 注意     静态成员变量,静态方法是基于类的,本文为了测试观察,所以,会用对象去引用静态成员变量和静态方法.      Super Class: package shuai.stud

php开发过程中关于继承的使用方法分享

继承 通常需要这样一些类,这些类与其它现有的类拥有相同变量和函数.实际上,定义一个通用类用于所有的项目,并且不断丰富这个类以适应每个具体项目将是一个不 错的练习.为了使这一点变得更加容易,类可以从其它的类中扩展出来.扩展或派生出来的类拥有其基类(这称为"继承",只不过没人死)的所有变量和函数,并 包含所有派生类中定义的部分.类中的元素不可能减少,就是说,不可以注销任何存在的函数或者变量.一个扩充类总是依赖一个单独的基类,也就是说,不支持多 继承.使用关键字"extends&q

Java语言入门教程(十四):Java语言中方法重载与方法覆盖

很多时候,某个Java类中有多个类似的方法.如Math类中,计算绝对值的方 法就会有多个,因为对不同数据类型的数计算方式不同.比如对float,int, long,double各类型的计算方式各不相同,那么Math类中就应该设计4个求绝对 值的方法,分别对每种类型进行计算.在这种情况下,最好的方式就是设计4个 同名,但是不同参的方法,如下所示(请参见API帮助文档): abs(double a) Returns the absolute value of a double value. abs(

JAVA学习(六):JAVA中的继承及其常见问题分析

JAVA中的继承及其常见问题分析 1.JAVA中继承的定义 JAVA中,类的继承是通过扩展其他类而形成新类来实现的,原来的类称为父类(Super Class)或基类,新的类称为原来类的子类或派生类.在子类中,不仅包含了父类的属性和方法,还可以增加新的属性和方法,从而使得父类的基本特征可被所有子类对象共享. 注:类的继承并不改变类成员的访问权限,也就是说,如果父类的成员是公有的.被保护的或默认的,它的子类仍具有相应的这些特性. /**********************************

详解Java编程中Annotation注解对象的使用方法_java

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据.  1.基本语法Java SE5内置三种标准注解 @Override:表示当前的方法定义将覆盖超类中的方法.如果你不小心拼写错误,或者方法签名对不上被覆 盖的方法,编译器就会发出错误提示 @Deprecated:如果程序员使用了注解为它的元素,那么编译器就会发出警告信息 @SupperessWarnings:关闭不当的编译器警告信息. Java SE5内置四种元注解 @Target

java接口中多继承的问题

java中支撑多继承吗? 支持->接口啊 为什么接口支持多继承呢?因为接口中没有方法体!即使可能两个接口中有一样的抽象方法,但是 只会调用子类中覆盖该同样抽象方法的具体方法!不会引起调用的歧义! interface A{    public abstract void show(); }   interface B{    public abstract int show(); }   interface C extends A, B{      } /*     相同的函数名,函数参数 但是不