Java 默认访问控制符
来源:互联网 发布:python mysql异常处理 编辑:程序博客网 时间:2024/06/06 09:28
众所周知,Java的访问控制符,有public、protected、默认、private四种。对于我而言,默认类型是最容易混淆的。虽然知道默认类型的访问权限排第3,但是有时候和protected还是会混淆。这里做个小小的梳理。default与protected在大多数的资料中显示的是
同包子类protected√√默认√×这样乍一看,在子类中默认都不能访问吗?
package org.zheng.accesscontrol.a;/** * Create by zxb on 2017/4/16 */public class A { protected String aa; String bb; private String cc;}
package org.zheng.accesscontrol.a;/** * Create by zxb on 2017/4/16 */public class B extends A { public void H(){ this.aa = ""; //正常访问 this.bb = ""; //正常访问 } public static void main(String[] args){ A a = new A(); a.aa = "1"; //正常访问 a.bb = "1"; //正常访问 }}
这里看到bb在子类B中是能够正常访问的。
再看在不同包下的子类C
package org.zheng.accesscontrol.b;import org.zheng.accesscontrol.a.A;/** * Create by zxb on 2017/4/16 */public class C extends A { public void H(){ this.aa = ""; //正常访问 this.bb = ""; //编译报错 } public static void main(String[] args){ A a = new A(); a.aa = "1"; //编译报错 a.bb = "1"; //编译报错 }}
这时候,在子类C的实例方法中,protected修饰的aa是可以访问的,但是默认的bb会编译异常
package org.zheng.accesscontrol.b;import org.zheng.accesscontrol.a.A;/** * Create by zxb on 2017/4/16 */public class D { public static void main(String[] args) { A a = new A(); a.aa = "1"; //编译报错 a.bb = "1"; //编译报错 }}
在不同包的类D,实例方法同样访问aa,bb都是编译错误的。
因此可以知道,
跨包情况下,protected修饰的变量仍可以被子类继承,而默认的不行。
跨包情况下,实例对象无法访问protected或者默认修饰的变量。
0 0
- Java 默认访问控制符
- java 访问控制修饰符public、 protected、 默认、private
- Java成员的默认访问控制
- Java成员的默认访问控制
- java 访问控制符
- java 访问控制符
- java 访问控制符
- java访问控制符
- java 访问控制符
- java访问控制符
- java访问控制符
- java--访问控制符
- Java访问控制符
- 【Java】访问控制符
- java访问控制符
- Java 访问控制符
- Java访问控制符
- Java 访问控制符
- 对OpenGL列主序的说明
- JSP过滤器防止Xss漏洞
- POC
- Linux 操作系统 C 语言编程入门之编译调试说明及Makefile的编写
- c++中,类 和 类中成员(对象)的构造函数和析构函数的执行顺序
- Java 默认访问控制符
- Node.js Stream(流)
- bzoj 4774: 修路 (斯坦纳树)
- C++内存地址
- Redis 进行定时任务的操作
- 无监督学习(unsupervised learning) 2.词嵌入
- NCL安装再尝试
- 无监督学习(unsupervised learning) 3.近邻嵌入
- Android 多线程编程的总结