zoukankan      html  css  js  c++  java
  • 关于protected在子类创建父类对象无法访问父类protected方法或成员

    子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的。
    注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法。

    请参见Java官方文档:Chapter 6. Names中的6.6.2.1. Access to a protected Member
    具体例子如下:

    父类C:在包c下

    1 package c;
    2 public class C {
    3   protected int id;
    4   protected void test() {
    5 
    6   }
    7 }

    子类S:在包s下

     1 package s;
     2 import c;
     3 import q;
     4 import t;
     5 public class S extends C {
     6 void accessProtected() {
     7   //C中的protected仅允许其子类S内部访问
     8   id = 5;
     9   test();
    10   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
    11   S s = new S();
    12   s.id = 6;
    13   s.test();
    14 
    15   Q q = new Q();
    16   q.id = 5;
    17   q.test();
    18 
    19   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
    20   //所以c.id不可访问
    21   // C c = new C();
    22   // c.id;
    23   // c.test();
    24 
    25   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
    26   //所以t.id不可访问
    27   // T t = new T();
    28   // t.id;
    29   // t.test();
    30   }
    31 }
    

    S的子类Q,包q下

    package q;
    import s;
    public class Q extends S{
    
    }

    C的子类T,包t下

    package t;
    import c;
    public class T extends C {
    
    }
  • 相关阅读:
    重构之路第一篇——重新组织函数的几种方法
    Maven设置http代理
    maven本地仓库路径和修改
    Maven安装目录分析
    使用Python解析Loadrunner的post的中文数据
    Python3 批量创建文件夹
    tomcat设置上传文件大小
    Jenkins启动
    Sublime Text 3 编译Python3
    常用SQL
  • 原文地址:https://www.cnblogs.com/uoar/p/7144804.html
Copyright © 2011-2022 走看看