zoukankan      html  css  js  c++  java
  • Java-protected的使用范围

    protected的使用范围

    类NewObject中有protected修饰的方法或者属性,则:

    • 同一个包中:

      1. 可在同一个包里的子类中实例化NewObject类获得对象,然后可用该对象访问protected修饰的方法或者属性,即.操作访问。
      2. 可在同一个包里的非子类中实例化NewObject类获得对象,然后可用该对象访问protected修饰的方法或者属性。
      3. 可在同一个包里的非子类中实例化NewObject类的子类(该子类和NewObject类在同一个包中)获得对象,然后可用该对象访问protected修饰的方法或者属性。
      4. 可在同一个包里的NewObject类的子类中调用NewObject类中protected修饰的方法或者属性,即protected修饰的方法和属性可被同一个包中的子类继承。
    • 非同一个包中:

      1. 可在非同一个包里的子类中实例化NewObject类获得对象,但无法用该对象问protected修饰的方法或者属性。
      2. 可在非同一个包里的非子类中实例化NewObject类获得对象,但无法用该对象问protected修饰的方法或者属性。
      3. 可在非同一个包里的非子类中实例化NewObject类的子类(该子类和NewObject类不在同一个包中)获得对象,但无法用该对象问protected修饰的方法或者属性。
      4. 可在非同一个包里的NewObject类的子类中调用NewObject类中protected修饰的方法或者属性,即protected修饰的方法和属性可被不同一个包中的子类继承。

    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方法不可以在不同一个包中的其它类中被访问
          }
      }
      
  • 相关阅读:
    奥数视频
    提车应该检查哪?4S店都怕你检查这4个“雷区”,别等后悔才知道
    乒乓球拍子和套胶选择
    2018天津英华国际学校初中报名指南
    水瓶座出生日期是几月几号到几月几号
    乒乓球 世锦赛
    鸡蛋羹要怎么蒸才会更嫩?秘诀在这里
    家庭理财方法:知道这7个定律可以帮你赚更多钱!
    要知道股市有“三底”,估值底、政策底、市场底!
    DbMigration使用方法
  • 原文地址:https://www.cnblogs.com/Victor-Han/p/4861412.html
Copyright © 2011-2022 走看看