Java修饰符
来源:互联网 发布:好看的淘宝金酷娃玩具 编辑:程序博客网 时间:2024/06/06 03:53
Java中,有四种修饰符,分别为private,protected,public和默认。关于他们的区别,现解释如下:
1 private:
私有的,只能是类自身才能访问,如一个Java工程中,我们添加了一个包,包名为gibbon.java.test。在该包名下定义了一个类名为Test的类。具体代码所示。
package gibbon.java.test;public Class Test{ private int a; protected int b; public int c; int d; public static void main(String[] args){ Test test = new Test(); int tmp = test.a; //因为是在自身中调用的私有成员数据,所以这个语句是正确的 }}
但是,如果我们在gibbon.java.test目录下再添加一个类名为TestPrivate的类,然后调用Test的私有数据a.就会发现,是个错误的语句。
package gibbon.java.test;public Class TestPrivate{ public static void main(String[] args){ Test test = new Test(); int tmp = test.a; //因为是在另一个类中调用的私有成员数据,所以这个语句是错误的 }}
另外,我们在这里再添加一个gibbon.java.others的包,同样,和上面的TestPrivate类一样,gibbon.java.others下的类也不能调用Test的私有成员
2 protected:
成员是受保护的,只有如该类的派生类(即子类)或者同个包名下的类才能访问。如下例子,在gibbon.java.test下有个TestProtected的类,其程序如下:
package gibbon.java.test;public Class TestProtected{ public static void main(String[] args){ Test test = new Test(); int tmp = test.b //b是受保护成员数据,即使是非自身类调用,在同个包内的其他类也可以访问 }}但是,若如1中所说的,在包gibbon.java.others下的某个类访问,则会出现非法访问,除非这个类是派生自所访问的类。如下例子:
package gibbon.java.others;import gibbon.java.test;public Class TestChild extends Test{ public static void main(String[] args){ Test test = new Test(); int tmp = test.b; }}但是这个TestChild仍然无法访问父类的私有成员a。见1
3 默认:
成员属性是默认的,其和private的区别是比private的权限大点,即默认的能被同个包名下的类所访问,而private不行。但默认的又比protected属性的权限小些,其同样和protected能在同包名下被访问,但若是非同包的类则不能直接访问,即使是派生类也不行,如上面的TestChild派生类,若加如下句子,则编译报错。
package gibbon.java.others;import gibbon.java.test;public Class TestChild extends Test{ public static void main(String[] args){ Test test = new Test(); int tmp1 = test.d; //非相同包内的派生类访问父类的默认成员是不允许的 int tmp = test.b; }}
4 Public:
公有的,所有的类都能访问。这个是最容易理解的。
- java修饰符五(abstract 修饰符)
- Java修饰符与访问修饰符
- java修饰符(abstract 修饰符)
- java 修饰符(final 修饰符)
- java修饰符和访问修饰符
- java修饰符的修饰范围
- Java 修饰符小结
- Java修饰符
- Java的修饰符
- java中的修饰符
- java中的修饰符
- java 访问修饰符
- java修饰符权限
- Java中的修饰符
- Java修饰符
- Java 修饰符小结。
- JAVA 修饰符
- java 访问修饰符
- 改变APK安装位置
- 这也太慢了
- activiti任意跳转
- 数据库
- vb函数后加美元符是为了提高性能
- Java修饰符
- 用户研究之道:谈谈用户的七个弱点
- LeetCode "Palindrome Partitioning"算法时间复杂度分析
- Decode Ways(如何解码) 【leetcode】
- [设计模式笔记]二. 结构型模式--12.Flyweight模式(享元模式)(一)
- linux scp ssh命令不用输入密码
- activiti笔记
- Netfilter和iptables学习总结
- 网址