/*
关于修饰符:
类:public default
                public protected default private
same class          √           √        √        √
same package      √           √        √        ×
subclass          √           √        ×        ×
dif    package          √           ×        ×        ×

#但是需要注意的是:如果想使用defualt修饰方法和变量的是时候,
不需要写default,不写就是默认default
*/
import com.remoo.test.Learn09_Test;
public class Learn09{
    public static void main(String[] aa){
        //Remoo.P_hello="111";
        //System.out.println(P_hello);
        //如果是private,则不能通过不同的类访问
        
        //Remoo.hello="你好";
        System.out.println(Remoo.hello);//可以输出
        //证明default可以通过不同类访问
        
        System.out.println(Test.hello);//可以输出
        //证明default可以在同一个包内调用
        
        //Test.Son_Protected_hello = "hello";
        System.out.println(Test.Son_Protected_hello);//可以输出
        //通过子类访问子类自身的protected属性
        System.out.println(Test.Fat_Protected_hello);//可以输出
        //通过子类访问父类的protected属性
        //System.out.println(Remoo.Son_Protected_hello);//不能通过父类找子类
        System.out.println(Remoo.Fat_Protected_hello);//可以输出
        //访问父类中的protected属性
        
        //测试就近原则-父类子类的优先性
        System.out.println(Remoo.Same_Test);//fat
        System.out.println(Test.Same_Test);//son
        
        //访问另一个包
        Learn09_Test.main(null);
        //System.out.println(Learn09_Test.welcomeWord1);
        //System.out.println(Learn09_Test.welcomeWord2);
        //System.out.println(Learn09_Test.welcomeWord3);
        //上面三个都不行。只有public的才可以通过不同的包访问
        System.out.println(Test1.callDifPackageProtected());
        System.out.println(Learn09_Test.welcomeWord4);//public可以访问
        
        //但是protected可以在不同包中但是有继承关系的类中使用
        //要在不同包中想要访问其protected的成员,必须要继承之后才能用
        System.out.println(Test.callSuperClassProtected());
        
        
    }
    
}
class Test1 extends Learn09_Test{
    static String callDifPackageProtected(){//protected可以在不同包中的继承对象中访问
        return welcomeWord3;
    }    
    //default不可以在不同包中访问
    //static String callDifPackageDefault(){
    //    return welcomeWord2;
    //}
}

class Test extends Remoo{
    protected static String Son_Protected_hello="子类中的protected";
    static String Same_Test="son";
    
    static String callSuperClassProtected(){//子类调用父类的protected
        return Fat_Protected_hello;
    }

}

class Remoo{//父类
    private static String P_hello = "父类中的private";
    static String hello = "父类中的default";
    protected static String Fat_Protected_hello="父类中的protected";
    static String Same_Test="fat";
}

最新文章

  1. POJ1149 PIGS [最大流 建图]
  2. git 查看生成对象
  3. Cron表达式简单学习
  4. JqueryEasyUI教程入门篇
  5. Oracle自增主键的添加[sequence]--表数据已存在
  6. cocos中使用VS自动创建工程的方法
  7. JS操作文件
  8. Model First:创建实体数据模型(ADO.NET 实体数据模型)
  9. Java 覆盖测试工具 :EclEmma
  10. git gitk命令
  11. 结构-行为-样式-Js排序算法之 快速排序
  12. WebSocket和kafka实现数据实时推送到前端
  13. cxf,两个声明导致 ObjectFactory 类中发生冲突
  14. Windows激活
  15. 第34章:MongoDB-索引--用户管理
  16. sqlserver 日志传送
  17. Linux基础命令---paste
  18. VisualStudio“在查找预编译头使用时跳过"解决方案
  19. Unity发布安卓Splash Image适应手机、平板
  20. 通过vue-cli3构建一个SSR应用程序

热门文章

  1. 【Redis】集群数据迁移
  2. tensorflow版本的bert模型 GPU的占用率为100%而其利用率为0%
  3. HTML,CSS,JS,DOM,jQuery
  4. JS中通过id或者class获取文本内容
  5. 动态树 — Euler_Tour_Tree
  6. Springboot 整合 MongoDB
  7. 内存分析器 (MAT)
  8. 广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/广西省气象数据/降雨量分布数据/太阳辐射数据
  9. Tapdata 肖贝贝:实时数据引擎系列(四)-关于 Oracle 与 Oracle CDC
  10. Visual Studio 生产环境配置方案:SlowCheetah