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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于文露 黑马帝   /  2011-10-11 19:50  /  2807 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

黄锋 黑马帝 2011-10-12 16:29:09
楼主
本帖最后由 黄锋 于 2011-10-12 16:29 编辑

protected着实切语义是:protected修饰的措施或变量将会被任何位置的子类继承,然而永远只能被最早定义他的父类所在的包的类所见(除非该类以及其子类能看到本身的该protected措施或变量之外)。

点评

很感谢您的答复  发表于 2011-10-25 13:36
很感谢你的答复  发表于 2011-10-25 13:29

评分

参与人数 1黑马币 +4 收起 理由
wangfayin + 4 赞一个!

查看全部评分

回复 使用道具 举报
package packa;
public class  A
{
        public void show()
        {
                System.out.println("a show run");
        }
}





package packb;
public class B
{
        public  void show()
        {
                System.out.println("b show run");
        }
        protected void method()
        {
                System.out.println("b method run");
        }
}





package packdemo;
class  PackageDemo extends packb.B
{
        public static void main(String[] args)
        {
                packa.A a =new packa.A();
                a.show();
                packb.B b= new packb.B();
                b.show();
                b.method();
        }
}
我建立了三个包,当包packa和包packb编译通过后,我再通过javac命令编译包packdemo
结果却是显示:
C:\Program Files\EditPlus 3>javac -d D:\my=java-classes PackageDemo.javaPackageDemo.java:10: 错误: method()可以在B中访问protected                               b.method();                                                              ^                                                      1 个错误

这是为什么呀?protected 的用法不是这样子么                                                               

3 个回复

倒序浏览
作用域 当前类 同一包 子孙类 其他包
public   √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×

这样给你写出来之后 我想你应该很快就能明白了,

点评

感谢你的答复  发表于 2011-10-25 13:30

评分

参与人数 1技术分 +1 黑马币 +4 收起 理由
wangfayin + 1 + 4

查看全部评分

回复 使用道具 举报
本帖最后由 张洋铭 于 2011-10-12 15:05 编辑

1. protected范围是,本类中,本包中,以及自己的子类有效。 而且你代码里继承基本就白瞎了,继承完什么也没调用。

2. 你new packb包中B类的对象,然后调用被protected的方法,但问题是protected的可见度是不能跨包,如果你想调用B类的method, 你就直接写method();就可以了,因为你继承了这个方法。

点评

很感谢您的答复  发表于 2011-10-25 13:37
很感谢您的答复  发表于 2011-10-25 13:30

评分

参与人数 1黑马币 +4 收起 理由
wangfayin + 4 赞一个!

查看全部评分

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