注意:protected表示只有在子类和同包中可以访问。

需要注意的是,在其他包中,若是创建了父类的对象,但是父类对象访问不了自己类里面用protected修饰的属性,只能由子类访问父类的protected修饰的属性,切记!

而在本类本包中,则可以访问protected修饰的属性!(这个结论不对,下面的是对的!)

参考来源:http://www.cnblogs.com/Victor-Han/p/4861412.html

package 1:

  1. BaseClass:

    package package_1;
    // 相当于NewObject类
    public class BaseClass {
    // protected方法
    protected void protectedMethod() {
    System.out.println("This is BaseClass");
    } }  
  2. SubClass:

    package package_1;
    
    public class SubClass extends BaseClass {
    }  
  3. MainClass:

    package package_1;
    
    public class MainClass {
    public static void main(String[] args) {
    BaseClass b1 = new BaseClass();
    SubClass s1 = new SubClass();
    b1.protectedMethod(); // 父类的protected方法可在同一个包中的其它类中被访问
    s1.protectedMethod(); // 子类中继承了父类的protected方法
    }
    }

package 2:

  1. SubClass:

    package package_2;
    
    import package_1.BaseClass;
    // 继承了不在同一个包中的父类 BaseClass
    public class SubClass extends BaseClass {
    public void testMesthod(){
    BaseClass b1 = new BaseClass();
    b1.protectedMethod(); // 编译器报错。父类的protected方法不可以在不同一个包中的子类中被访问
    this.protectedMethod(); // 子类继承了父类protected方法
    }
    }

      

  2. MainClass:

    package package_2;
    
    import package_1.*;
    
    public class MainClass {
    public static void main(String[] args) {
    BaseClass b1 = new BaseClass();
    b1.protectedMethod(); // 编译器报错。父类的protected方法不可以在不同一个包中的其它类中被访问
    SubClass s1 = new SubClass();
    s1.protectedMethod(); // 编译器报错。子类的protected方法不可以在不同一个包中的其它类中被访问
    }
    }

      

    protected修饰的属性或方法,只在子类里面友好,若不在子类里面,而是在其他包的测试类中,创建的子类对象,是访问不了protected修饰的属性或方法;只有在其他包创建了子类,子类里面才能使用protected修饰的属性或方法!

访问修饰符相关注意点(protected子类友好)的更多相关文章

  1. JAVA 中的权限访问修饰符(public,protected,default,private )

    JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...

  2. Java 访问修饰符详解

    访问修饰符定义了类.属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private.default.protected 和 public. public,公共修饰符,被其修饰的类.属性 ...

  3. C# JAVA成员访问修饰符比较

    在面向对象的访问修饰符中常用的有public ,private ,protected C# 访问修饰符: private < protected internal < internal/p ...

  4. [No0000E7]C# 封装 与访问修饰符

    C# 支持的访问修饰符: Public Private Protected Internal Protected internal Public 访问修饰符 Public 访问修饰符允许一个类将其成员 ...

  5. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  6. Java的访问修饰符的作用范围

    访问修饰符: private default protected public 作用范围: 访问修饰符\作用范围 所在类 同一包内其他类 其他包内子类 其他包内非子类 private 可以访问 不可以 ...

  7. Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明

    1.关键字可以修饰的说明: 关键字 属性(是否可修饰) 方法(是否可修饰) 类(是否可修饰) static 是 是 是 final 是 是 是 abstract 否 是 是 2.关键字的意义: 关键字 ...

  8. Java面向对象入门(2)-访问修饰符

    Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...

  9. JAVA知识总结(三):继承和访问修饰符

    今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下.这一部分还是非常重要的,需要仔细思考. 继承 继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新 ...

随机推荐

  1. jQuery中容易让人困惑的东西

    前言:jqueryt很灵活,太灵活了,可以说是他一个优点,也是他一个缺点,达到一种效果,十个人也许会用十种不同的方法来实现这个过程,结果一样,过程不一样,这到底是好,还是坏呢. 一,什么是jquery ...

  2. 图像连通域检测的2路算法Code

    本文算法描述参考链接:http://blog.csdn.net/icvpr/article/details/10259577 两遍扫描法: (1)第一次扫描: 访问当前像素B(x,y),如果B(x,y ...

  3. MVC返回400 /404/...

    return new HttpStatusCodeResult(HttpStatusCode.BadRequest); //HttpStatusCode statusCode 枚举 // HttpSt ...

  4. freemarker使用map替换字符串中的值

    package demo01; import java.io.IOException;import java.io.OutputStreamWriter;import java.io.StringRe ...

  5. vue-属性传值 props

    props属性传值 1.传具体的值  string(字符串) number(数值) boolean(布尔) 2.传一个引用 array(数组)  object(对象) ----传引用----- 代码 ...

  6. Perl PPM安装模块

      介绍一下如何使用PPM(Perl Package Manager)安装模块(必须安装了ActivePerl).打开PPM,我们看到的界面是这样的: 我们看到第二行是工具栏,从左到右,第一个是查看仓 ...

  7. GDI 画刷(10)

    创建画刷 调用 CreateSoildBrush.CreateHatchBrush.CreateBrushIndirect 函数可以创建画刷. CreateSoildBrush:创建实心画刷: Cre ...

  8. [luogu1640 SCOI2010]连续攻击游戏 (二分图最大匹配)

    传送门 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某 ...

  9. Linux挂载NAS共享文件夹

    [root@ftp:/mnt] > mount -o username=user01,password=1234567890 //192.168.31.20/share /mnt/nas [ro ...

  10. java 反射之获取泛型对象的所有字段与对应的值(包括父类的)

    上代码: public static void main(String[] args) throws IntrospectionException { SysUser obj = new SysUse ...