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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美恋爱 高级黑马   /  2013-12-5 16:13  /  1341 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 完美恋爱 于 2013-12-5 16:46 编辑

class S
{
        public static void main(String[] agrs)
        {
                A a = new A();
                a.show();
        }
}

class A extends B
{
        void show()
        {
                System.out.println("hahaha");
        }
}

class B
{
        protected void show()
        {
                System.out.println("ha");
        }
}

不是说当子类覆盖父类的方法时,即使父类的方法是protected修饰的也可以访问吗?

8 个回复

倒序浏览
子类权限要比父类大
回复 使用道具 举报
你这个有编译错误吧 在class S里是访问不到A.show方法的因为A.show成员是私有成员只能在类内部才能访问得到
回复 使用道具 举报
你们这是java吗 不像是我c#的写法呀  
回复 使用道具 举报
class S
{
        public static void main(String[] agrs)
        {
                A a = new A();
                a.show();
        }
}

class A extends B
{
    void show()//子类的权限必须得大于或者等于父类的权限。所以在void前面加上public或者加上protected都行。
        {
                System.out.println("hahaha");
        }
}

class B
{
        protected void show()
        {
                System.out.println("ha");
        }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
高丽华 发表于 2013-12-5 16:25
class S
{
        public static void main(String[] agrs)

谢谢你的回答,我懂啦!
回复 使用道具 举报
ixiangfeng 发表于 2013-12-5 16:17
子类权限要比父类大

谢谢啦!
回复 使用道具 举报
修饰符权限:
public > protected > default(即什么都不写) > private
在类的继承中,子类可以访问父类中被public或protected修饰的成员
楼主的程序中
子类A中show方法的权限比父类B中的show方法的权限小,无法实现覆盖,所以程序编译时会报错
楼主应该把代码
  1. void show(){
  2.                  System.out.println("hahaha");
  3.          }
复制代码

改为
  1. protected void show()
  2.          {
  3.                  System.out.println("hahaha");
  4.          }
复制代码

或者
  1. public void show()
  2.          {
  3.                  System.out.println("hahaha");
  4.          }
复制代码
回复 使用道具 举报

不客气!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马