帮忙理解一下程序

bekeer 2010-04-21 10:46:26
类一
public class Example1 {

public String getName() {
return "luffyke" ;
}
}


类二
public class Example2 {

public int getAge()
{
return 25 ;
}
}

类三

public class MainExample {

public class Test1 extends Example1 {
public String getName() {
return super.getName();
}
}

public class Test2 extends Example2 {
public int getAge() {
return super.getAge();
}
}

public String showName() {
return new Test1().getName();
}

public int showAge() {
return new Test2().getAge();
}
//这两行在这里有吗 在我看来好像没什么用啊
public static void main(String args[]) {
MainExample example = new MainExample();
System.out.println("姓名:" + example.showName());//直接调用example.getName()行不行啊
System.out.println("年龄:" + example.showAge());//也是直接调用example.getAge()行不
}
}
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabanphoto 2010-04-21
  • 打赏
  • 举报
回复
直接调用example.getName()行不行啊

我也初学,也是这个搞不明白,按我的感觉应该是可以这么调,但总是编译出错。
bekeer 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hq1305018 的回复:]
这个例子是为了说明继承和ORVERIDE.

MainExcample中的两上子类分别继承了两个类,并从父类得到了getName(),getAge()两个方法.
但是要注意,MainExcample并没有得到那两个方法,所以直接example.getName()和example.getAge()是不行的.
这也是为什么要加上showName()和showAge()那两个方法的原因.
[/Quote]
那这里可以理解成向上转型不
首先是MainExample中的showName()和showAge()两个方法调用Test1和Test2中的getName()和getAge()方法
然后Test1和Test2在分别调用父类中的getName()和getAge()
层层递进的关系
这样理解是不是向上转型
yy_dan 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hq1305018 的回复:]
这个例子是为了说明继承和ORVERIDE.

MainExcample中的两上子类分别继承了两个类,并从父类得到了getName(),getAge()两个方法.
但是要注意,MainExcample并没有得到那两个方法,所以直接example.getName()和example.getAge()是不行的.
这也是为什么要加上showName()和showAge()那两个方法的原因.
[/Quote]
正解
hq1305018 2010-04-21
  • 打赏
  • 举报
回复
这个例子是为了说明继承和ORVERIDE.

MainExcample中的两上子类分别继承了两个类,并从父类得到了getName(),getAge()两个方法.
但是要注意,MainExcample并没有得到那两个方法,所以直接example.getName()和example.getAge()是不行的.
这也是为什么要加上showName()和showAge()那两个方法的原因.
Mars_Ma_OK 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hq1305018 的回复:]
这个例子是为了说明继承和ORVERIDE.

MainExcample中的两上子类分别继承了两个类,并从父类得到了getName(),getAge()两个方法.
但是要注意,MainExcample并没有得到那两个方法,所以直接example.getName()和example.getAge()是不行的.
这也是为什么要加上showName()和showAge()那两个方法的原因.
[/Quote]

这个还说明了内部类的用途..

那两句是要的到内部类的getName()和getAge(); MainExcample是没有拿到这两个方法.
zfq642773391 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bekeer 的回复:]
引用 1 楼 hq1305018 的回复:
这个例子是为了说明继承和ORVERIDE.

MainExcample中的两上子类分别继承了两个类,并从父类得到了getName(),getAge()两个方法.
但是要注意,MainExcample并没有得到那两个方法,所以直接example.getName()和example.getAge()是不行的.
这也是为什么要加上showName()……
[/Quote]
不是向上转型,Test1和Test2的方法只是调用了基类的方法,即使你不写,他也会默认调用基类的方法,除非你重写了这两个方法,这是 继承
zhuzhusany 2010-04-21
  • 打赏
  • 举报
回复
类三本来就是错误的,当然编译不通过

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧