A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 面具猴 于 2014-10-22 17:18 编辑
  1. class Z0{
  2.         void show(){
  3.                 System.out.println("Foo.show()");
  4.         }
  5. }
  6. class Z1 extends Z0{
  7.         @Override
  8.          void show() {
  9.                 System.out.println("Z1.show()");
  10.         }
  11. }
  12. class Z2 extends Z1{
  13.         @Override
  14.         public void show() {
  15.                 System.out.println("Z2.show()");
  16.         }
  17.         public void Z2Func(){
  18.                 this.show();//访问Z2类对象的show方法
  19.                 super.show();//访问Z1类对象的show方法
  20.                 //如何直接访问Z0类对象的show方法?
  21.         }
  22. }
复制代码


评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

10 个回复

倒序浏览
既然代码都写出来了,自己看结果不就知道了吗?
回复 使用道具 举报
new个Z0 的对象,不知道是不是你想要的效果

  1. public void Z2Func()
  2.                         {
  3.                 this.show();//访问Z2类对象的show方法
  4.                 super.show();//访问Z1类对象的show方法
  5.                 //如何直接访问Z0类对象的show方法?
  6.                                 Z0 zz = new Z0();
  7.                                 zz.show();
  8.         }
复制代码
回复 使用道具 举报
你不是经常用 equals toString什么的吗 连Object里面的成员都能访问 爷爷级别的肯定可以了
回复 使用道具 举报
都继承下来了 肯定可以
回复 使用道具 举报
不创建z0对象是无法直接调用z0里面的public void show()方法的,因为z2把public void show()方法覆盖了.
你在z0创建个其它方法,如果z2没有覆盖那个方法就能直接通过z2的对象调用那个方法了.
class Z0 {
        public void show() {
                System.out.println("Foo.show()");
        }
        void test() {
        }
}
class Z1 extends Z0 {

        @Override
        public void show() {

                super.show();
        }
}
class Z2 extends Z1 {
        @Override
        public void show() {
                System.out.println("Z2.show()");
        }
       
        public void Z2Func() {
                new Z2().test();//成功调用z0的方法
                new Z2().show();
                // 如何直接访问Z0类对象的show方法?
        }
}
回复 使用道具 举报
nerveva2000 发表于 2014-10-21 18:58
new个Z0 的对象,不知道是不是你想要的效果

这不是直接访问啊,这是通过对象间接访问。
this.show(); 和super.show(); 才是直接
回复 使用道具 举报
郑飞 发表于 2014-10-21 19:39
你不是经常用 equals toString什么的吗 连Object里面的成员都能访问 爷爷级别的肯定可以了 ...

那是在没有覆盖父类的方法,父类的父类的方法。。。。的情况下才能直接使用Object类的方法。
回复 使用道具 举报
好吧,看来在覆盖了所有父类的某个方法的情况下,无法直接访问超过两层的超类。。
回复 使用道具 举报
面具猴 发表于 2014-10-22 17:18
好吧,看来在覆盖了所有父类的某个方法的情况下,无法直接访问超过两层的超类。。 ...

看网上别人说,如果设计出来了三层继承关系,那就要考虑这样设计是否是最优了。。
回复 使用道具 举报
是吗?谢谢提醒。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马