private, default, protected, and public scoping

We often go in four modifier modifying variables, methods and classes, today we have the time to test their modified method scope.

Person class

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();
    }
}

Test 1

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

Test Two

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

Test three

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

Test 4

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

to sum up

1, private key sub, it can only be accessed in this class.
2, default keyword can be accessed under the same package.
3, protected keywords, under the same package and subclasses under different packets can access.
4, public key, can be accessed anywhere.

Guess you like

Origin www.cnblogs.com/feiqiangsheng/p/12233495.html