关于继承重载的一个困惑我很久的问题

superhemiao 2006-04-16 07:40:06
class A
{
void a1(){....}
void a2(){}
}
class B extends A
{
void b(){}
static void b2(){ new B().a1() }
}

new B().a1() 到底是个怎样的调用过程
在类B中是不是已经有了a1(),a2()到底属于谁
...全文
91 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fankobe 2006-04-17
却是你在A类的方法前面没有申明访问权限,所以就默认是包访问的(package),但是你的AB类并没有在同一个包里面,所以B类不能访问A类继承的方法,不过A类的方法却是继承来了,只是B类没有权限使用。
  • 打赏
  • 举报
回复
old_man 2006-04-16
只有public才完全的直接的B从A中来调用!!
  • 打赏
  • 举报
回复
powerman_lyj 2006-04-16
继承时,方法调用过程

1。在本类中寻找
2。在本类的父类中寻找
3。在更上一层中寻找
。。
直到找到Oject中还没有找到的化就会抛出异常
  • 打赏
  • 举报
回复
fankobe 2006-04-16
B类继承了A类的所有方法(包括private的方法,只是这个不能使用),所以你的B类确实是有a1和a2两个方法的,new B().a1()调用的是B类继承来的方法,因为你没有重载(其实应该说是复写,重载不是这样的),所以你调用后的结果跟A类的对象调用a1方法的效果是一样。
  • 打赏
  • 举报
回复
old_man 2006-04-16
由于B继承了A,所以A中所有定义的变量在B中都可以直接调用,也就是说B中有同样的功能。也就是说a1(),a2()在属于A的同时可以随时被B调用的!!
  • 打赏
  • 举报
回复
yes1983 2006-04-16
类B继承了类A中的方法a1()和a2(),newB().a1()调用的是类B的a1,由于你没有重载方法a1,所以newB().a1()起的作用和类A中的a1是一样的
  • 打赏
  • 举报
回复
interpb 2006-04-16
子类对象包含父类对象的方法和属性

  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2006-04-16 07:40
社区公告
暂无公告