Java 访问权限控制
2017-09-20 09:26
501 查看
## 简介
java中4种访问权限修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。
private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
b、默认权限(default)
类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
仅限同包类(无论是否是子类)访问;
若子类同包,则可访问;
子类(其他包)不能访问;
当前包下的子包中的类,也不可访问;
c、受保护权限(protected)
protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。
如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
同包类(无论是否是子类)可访问
子类(不论是否同包)可访问
其他包的类(非子类)不能访问
d、公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
2、所有修饰符都可以修饰数据成员,方法成员,构造方法。
3、为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,数据成员,如果没有特殊需要,尽可能用private.
4、修饰符修饰的是“被访问”的权限
java中4种访问权限修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。
概况
首先在这里把它们的访问权限表示出来: 访问权限 类 包 子类 其他包 public ∨ ∨ ∨ ∨ protect ∨ ∨ ∨ × default ∨ ∨ × × private ∨ × × ×
详解
a、私有权限(private)private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
b、默认权限(default)
类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
仅限同包类(无论是否是子类)访问;
若子类同包,则可访问;
子类(其他包)不能访问;
当前包下的子包中的类,也不可访问;
c、受保护权限(protected)
protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。
如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
同包类(无论是否是子类)可访问
子类(不论是否同包)可访问
其他包的类(非子类)不能访问
d、公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
TIPS:
1、并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。2、所有修饰符都可以修饰数据成员,方法成员,构造方法。
3、为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,数据成员,如果没有特殊需要,尽可能用private.
4、修饰符修饰的是“被访问”的权限
Example
注释行均无权访问com.bean.test包
package com.bean.test; /** * 水果类 */ public class Fruit { private String priColor; protected String protectedColor; String defaultColor; public String publicColor; private void mo(){ this.priColor = "privateColor"; this.defaultColor="defaultOrange"; this.protectedColor = "proStr"; this.protectedColor = "proStr"; this.publicColor = "pubStr"; } public Fruit() { } // getter setter }
package com.bean.test; /** * 橘子类 水果子类 */ public class Orange extends Fruit { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; fruit.defaultColor="defaultOrange"; fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; // this.priColor="priColor"; this.defaultColor="defaultOrange"; this.protectedColor = "proStr"; this.publicColor = "publicColor"; } }
package com.bean.test; /** * 桌子类 */ public class Desk { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; fruit.defaultColor="defaultOrange"; fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; } }
com.bean.test.child1包
package com.bean.test.child1; import com.bean.test.Fruit; /** * 苹果类 水果子类 */ public class Apple extends Fruit { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; // fruit.defaultColor="defaultOrange"; // fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; // this.priColor="priColor"; // this.defaultColor="defaultOrange"; this.protectedColor = "proStr"; this.publicColor = "publicColor"; } } package com.bean.test.child1;
import com.bean.test.Fruit; /** * 椅子类 */ public class Chair { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; // fruit.defaultColor="defaultOrange"; // fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; } }
com.bean包
package com.bean; import com.bean.test.Fruit; /** * 香蕉类 水果子类 */ public class Banana extends Fruit { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; // fruit.defaultCol ba8f or="defaultOrange"; // fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; // this.priColor="priColor"; // this.defaultColor="defaultOrange"; this.protectedColor = "proStr"; this.publicColor = "publicColor"; } }
package com.bean; import com.bean.test.Fruit; /** * 房子类 */ public class House { private void mo(){ Fruit fruit = new Fruit(); // fruit.priColor = "privateColor"; // fruit.defaultColor="defaultOrange"; // fruit.protectedColor = "proStr"; fruit.publicColor = "pubStr"; } }
相关文章推荐
- 5.Java中的访问控制权限
- java访问权限控制
- java中的访问控制权限
- java中访问权限控制public protected default(friendly) 和private
- JAVA访问权限控制
- JAVA访问权限控制[zhuan]
- java访问权限控制
- Java 访问权限控制public>protected>同包>private
- thinking in java笔记 6 访问权限控制
- Java 深入学习(20) —— 访问权限控制
- java的包及访问控制权限
- Java 访问控制权限
- 读thinking in java笔记(五):访问权限控制
- Thinking in Java 第6章 访问权限控制 【包:库单元】
- Java编程思想:第6章 访问权限控制
- java的类成员访问控制权限
- [学习笔记][Java编程思想]第6章:访问权限控制
- Java中的访问权限控制详解
- 从0开始学java-访问权限控制
- java基础---访问权限控制