上海市|java封装详解

上海市|java封装详解

package a.a1;
/**
* 测试封装 四个访问控制符 private default protected public
*/
public class B1 {
//B1在a1包中
private int pri;
//private 私有 只能在同一类内使用
int def;
//不标注修饰默认default 默认 同一个包内都可调用
protected int pro;
//受保护的 包内可用&子类可用 *子类对象不可用
public int pub;
//公共 完全可用
//方法的封装效果同属性

package a.a1;
public class B2 {
//B2和B1在同一个包a1内
{
B1 b1 = new B1();
//b1.pri报错 private不能在类外使用
b1.def =0;
b1.pro = 1;
b1.pub =2;


package a.a2;
public class C1 {
//C1在a2包 与a1.B1 不在一个包内
{
a.a1.B1 b1 = new a.a1.B1();
//不在一个包内需要import导入或者写完整路径
//b1.pri报错 不在同一类内
//b1.def报错 不在同一包内
//b1.pro报错 不在同一包内且不是子类
b1.pub = 1;
//public完全开放使用


class C2 extends a.a1.B1 {
{
super.pro =1;
//不在同一包内的父类的protected属性可以调用
pub =2;
//默认super.pub
//super.pri super.def 报错 不在同一包内无法使用
a.a1.B1 b1 = new a.a1.B1();
//b1.pro报错 子类中生成的父类B1的对象b1不能使用 不在同一包内的 父类的protected内容
b1.pub =2;
C2 c2 = new C2();
c2.pro =1;
//子类C2生成的对象c2可以用子类继承来的c2.protected内容
c2.pub =2;


【上海市|java封装详解】