知识点:
访问控制权限也就是针对于封装做了一个总结,本次来观察四种访问控制权限。
具体内容:
在之前只是简单的见到了封装型,但是封装与访问控制权限是有直接联系的。
在java里面一共支持四种访问控制权限:public protected default private
No | 范围 | private | default | protected | public |
1 | 在同一个类中 | 1 | 1 | 1 | 1 |
2 | 在同一包的不同类 | 1 | 1 | 1 | |
3 | 在不同包的子类 | 1 | 1 | ||
4 | 在不同包的非子类 | 1 |
范例:定义一个cn.mldn.demo.A类
package cn.mldn.demoa;
public class A {
protected String info = "hello";
}
范例:定义cn.mldn.demo.B类,此类继承A类
package cn.mldn.demob;
import cn.mldn.demoa.A;
public class B extends A { //A不同包的子类
public void print(){
System.out.println("A类的info="+super.info);
}
}
范例:测试
package cn.mldn.po;
import cn.mldn.demob.B;
public class Test {
public static void main(String[] args) {
new B().print();
}
}
B中的方法会输出A类中的info属性。
如果说现在由Test类直接去输出A类中的info属性。
范例:错误访问、
package cn.mldn.po;
import cn.mldn.demoa.A;
public class Test {
public static void main(String[] args) {
A a = new A();
System.out.println(a.info);
}
}
由于Test与A类不在同一个包,并且没有继承关系,所以无法访问protected属性。
总结:
1.java的封装性是以private、protected、default三种权限为主;
2.对于权限的选择,给出一下的建议;
- 声明属性就实用private;
- 声明方法就实用public;
关于命名要求:
- 每一个单词的首字母大写,其余字母小写,例如:StudentInfo;
- 属性名称第一个单词字母小写,而后每个首字母大写,例如:studentName;
- 属性名称第一个单词字母小写,而后每个首字母大写,例如:getName;
- 常量名称实用大写字母表示:例如:MSG;
- 包名称实用小写字母:cn.mldn.demo