privatedefaultprotected和public的作用域

Posted feiqiangsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了privatedefaultprotected和public的作用域相关的知识,希望对你有一定的参考价值。

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

Person类

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

测试一

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方法不可见
    }
}

测试4

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关键字,任何地方都可以访问。

以上是关于privatedefaultprotected和public的作用域的主要内容,如果未能解决你的问题,请参考以下文章

(*p)++和*(p++)和*p++的区别

P*P和&P三者的区别

sed中p和P有什么区别?

*a=p和*a=&p的区别是啥呀 *a=p是否相当于a=&p

++ * p和* p ++之间的差异

模p加法和模p乘法学习