/*
关于修饰符:
类: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";
}

【java】学习路线10-权限修饰符详解的更多相关文章

  1. Java之Static静态修饰符详解

    Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...

  2. java 基础 四种权限修饰符

    /** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...

  3. abstract关键字、final关键字、static关键字、访问修饰符详解

     abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:

  4. java(异常体系及权限修饰符)

    java异常体系 异常的体系: 异常体系: --------| Throwable 所有错误或者异常的父类 --------------| Error(错误) --------------| Exce ...

  5. java四种访问权限修饰符

    java中四个访问权限修饰符: public(公开的).protected(受保护的).default(默认的).private(私有的). 它们决定了紧跟其后被定义的东西的使用范围. 适用范围< ...

  6. Java第十二天,权限修饰符

    Java当中权限修饰符共有四种.分别是public.protected.(default).private. 注:YSE代表可访问,NO代表不可访问.   同一个类 同一个包,非继承 不同的包,有继承 ...

  7. java中四种权限修饰符区别

    总的概括:public > protected > (default) > private 细分见下表格: 权限修饰符 public protected (default) priv ...

  8. Java的四种权限修饰符

    private:仅对本类可见 缺省(不需修饰符):对本包可见 protected:对本包及所有子类可见 public:对所有类可见 修饰符: * 权限修饰符:private,默认的,protected ...

  9. Java中类成员访问权限修饰符(public、protected、default、private)

    1.public(公共的): 任何类都可以进行访问(最不严格). 2.protected(保护的): 同一包内的类以及其子类可以进行访问. 3.default(缺省的): 类中不加任何访问权限限定的成 ...

随机推荐

  1. 【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate('oauth-bearer', {session: false})

    问题描述 在前两篇博文中,对NodeJS Express应用 使用MSAL + AAD实现用户登录并获取用户信息,获取Authorization信息 ( ID Token, Access Token) ...

  2. oracle-安装与访问、卸载

    安装oracle 官网(http://oracle.com/ )下载oracle -->Oracle Database -->点击接受Accept --> 下载11g(Downloa ...

  3. archlinux-小米pro15_2020款使用archlinux(MX350显卡驱动安装)

    1.官网下载archlinux ISO镜像 https://archlinux.org/download/   使用磁力链接下载 2.使用软碟通将镜像写入U盘,制作成U盘启动盘 3.进入BIOS 关掉 ...

  4. weiphp 插件"通用表单"BUG修改

    修改文件目录 在类FormsValueController 中添加函数 // 匹配函数 //$value:字符串 //$validate_rule:正则规则 // return true:比配成功,f ...

  5. python线程池 ThreadPoolExecutor 的用法及实战

    写在前面的话 (https://jq.qq.com/?_wv=1027&k=rX9CWKg4) 文章来源于互联网从Python3.2开始,标准库为我们提供了 concurrent.future ...

  6. 抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的 ...

  7. lerna源码阅读

    能够找到入口文件 能够本地调试

  8. RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得

    前言 首先说一点,企业中最常用的实际上既不是RocketMQ,也不是Kafka,而是RabbitMQ. RocketMQ很强大,但主要是阿里推广自己的云产品而开源出来的一款消息队列,其实中小企业用Ro ...

  9. 面试官:你确定 Redis 是单线程的进程吗?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林. 这次主要分享 Redis 线程模型篇的面试题. Redis 是单线程吗? Redis ...

  10. 【Python3】列表字典集合元组

    1 列表 1.1 定义与索引 在Python中,第一个列表元素的下标为 0通过将索引指定为 -1 可以让Python返回最后一个列表元素 inventory = ['sword', 'armor', ...