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

测试一

package Scope1;
/**
 * 测试类
 */
public class Person {
    private void privateMed(){}
    void defaultMed(){}
    protected  void protectedMed(){}
    public void publicMed(){}

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

相关文章:

  • 2021-06-05
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-11-10
  • 2021-06-05
  • 2021-04-27
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-23
  • 2022-01-28
相关资源
相似解决方案