这篇文章运用简单易懂的例子给大家介绍Java访问控制符的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Java包中的相关概念
包的概念
  Java中的包类似于操作系统中的文件夹,将具有类似功能的类或者相同的类放在相同的包里面,便于组织与管理
包的作用
  1.一是开发过程中避免类名重复问题;
  2.二是对代码整理归类,将功能相近的类放到一个包中管理;
  3.三是限定访问权限(default)就是包访问权限。
简述调用某个包中的类的三种方式
  1>使用一个类的全名:即包名+类名
    注意:在包中,所有类对真正名字将是包名+类名的组合,所以在运行的时候要将包层给写上,不能直接写类名。
  2>使用import语句导入一个包中的所有的类。
  3>使用import语句导入一个包中的特定的类。
Java中访问控制符的具体用法
为什么需要控制对成员的访问?
  第一个原因是防止程序员接触他们不该接触的东西---通常是内部数据类型的设计思想。
  进行访问控制的第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。Java的访问控制级别分类
  1.类访问控制级别
  2.对象访问控制级别
访问权限
访问权限 | 同一个类内部 | 同一个包内部 | 不同包中的子类 | 不同包的非子类 |
---|---|---|---|---|
public | ∨ | ∨ | ∨ | ∨ |
protected | ∨ | ∨ | ∨ | × |
default | ∨ | ∨ | × | × |
private | ∨ | × | × | × |
  总结:
    1>在一个类的内部,访问控制符是透明的,失效的
    2>在同一个包的内部,只有private有成员不能进行访问
    3>在不同包存在继承关系的两个类之间,只有public成员和protected成员可以进行访问
    4>在不同包之间,只有共有成员可以进行访问
代码演示
  (1)在一个类的内部,所有的成员彼此之间都可以进行相互访问,访问控制符是透明的,失效的,共有的可以调用私有的,私有的可以调用共有的。
package com.vg.demo01;
public class TestAccessModifier {
public void test1(){
System.out.println("我是public");
}
protected void test2(){
System.out.println("我是protected");
}
void test3(){
System.out.println("我是default");
}
private void test4(){
System.out.println("我是private");
}
public static void main(String[] args) {
TestAccessModifier t=new TestAccessModifier();
t.test1();
t.test2();
t.test3();
t.test4();
}
}
我是public
我是protected
我是default
我是private
  (2)在同包不同类之间,只有其私有成员不可以通过类对象名的方式进行访问,共有成员和保护型的成员都可以通过这种方式进行访问. 简言之:在同一个包的内部,只有其私有成员不能够进行访问
package com.vg.demo01;
//private是不能在同包的子类中起作用的。
public class TestAccessModifierSon extends TestAccessModifier{
public static void main(String[] args ) {
TestAccessModifierSon s = new TestAccessModifierSon();
s.test1();
s.test2();
s.test3();
}
}
我是public
我是protected
我是default
package com.vg.demo01;
//非子类,在同一个包中,没有继承父类,即不是它的子类,private同样不能发挥作用
public class TestAccessModifierNotSon {
public static void main(String[] args ) {
TestAccessModifierSon s = new TestAccessModifierSon();
s.test1();
s.test2();
s.test3();
}
}
我是public
我是protected
我是default
  (3)在不同包存在继承关系的两个类之间,只有共有类的共有成员和共有类的保护型成员才可以被另外一个包中的子类进行访问,但是在一个子类的外部,只有共有类的共有成员才可以被直接的访问.
package com.vg.demo02;
import com.vg.demo01.*;
//在不同的包中,类的子类只有public、protected这俩个可以产生效果
public class TestAccessModifierOtherSon extends TestAccessModifier{
public static void main(String[] args) {
TestAccessModifierOtherSon th =
new TestAccessModifierOtherSon();
th.test1();
th.test2();
}
}
我是public
我是protected
  (4)在不同包无任何关系的两个类之间,只有共有类的共有成员才可以被另外一个包中的类进行访问.
package com.vg.demo02;
import com.vg.demo01.TestAccessModifier;
public class TestAccessModifierOtherNotSon {
public static void main(String[] args) {
TestAccessModifier t = new TestAccessModifier();
t.test1();
}
}
关于Java访问控制符的原理是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。