zoukankan      html  css  js  c++  java
  • private、default、protected和public的作用域

    我们经常用四种修饰符去修饰变量、方法和类,今天我们来测试他们修饰方法时候的作用域。

    测试一

    package Scope1;
    /**
     * 测试类
     */
    public class Person {
        public void publicMed(){}
        protected  void protectedMed(){}
        void defaultMed(){}
        private void privateMed(){}
        // 都可以访问
        public void test(){
            Person person = new Person();
            person.publicMed();
            person.protectedMed();
            person.defaultMed();
            person.privateMed();
        }
    }
    

    测试二

    package Scope1;
    /**
     * 同包,非子类
     */
    public class Test01 {
        public void test01(){
            Person person = new Person();
            person.publicMed();
            person.protectedMed();
            person.defaultMed();
            // private方法不可见
        }
    }
    

    测试三

    package Scope1;
    /**
     * 同包,子类
     */
    public class Test02 extends Person{
        public void test02(){
            super.publicMed();
            super.protectedMed();
            super.defaultMed();
            // private方法不可见
        }
    }
    

    测试四

    package Scope2;
    import Scope1.Person;
    /**
     * 非同包,非子类
     */
    public class Test03 {
        public void test02(){
            Person person = new Person();
            person.publicMed();
            // protected方法不可见
            // default方法不可见
            // private方法不可见
        }
    }
    

    测试五

    package Scope2;
    import Scope1.Person;
    /**
     * 非同包,子类
     */
    public class Test04 extends Person{
        public void test04(){
            super.publicMed();
            super.protectedMed();
            // default方法不可见
            // private方法不可见
        }
    }
    

    总结

    1、private关键子,只能在本类中才可以访问。
    2、default关键字,同包下才可以访问。
    3、protected关键字,同包下和不同包下的子类才可以访问。
    4、public关键字,任何地方都可以访问。

  • 相关阅读:
    抽奖概率算法
    redis启动异常
    php如何快速读取大文件
    nginx反向代理解决跨域
    sublime修改侧边栏字体
    curl
    公众号开发一
    数组
    在windows下用vagrant建立lnmp开发环境
    gets--vs--fgets
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/12233495.html
Copyright © 2011-2022 走看看