java 属性访问修饰符_Java访问修饰符

private、protected、public是Java中的访问权限修饰符,可以用于修饰变量、方法和类。

(更正:类只有default和public两种修饰符,内部类相当于成员,可以使用private、protected和public修饰)

private表示只能在本类才能访问;

protected表示在同一个包的类中或者子类中可以访问;

public表示在任何类中都可以访问;

当不用这三个修饰符修饰时就是默认的访问权限,即在同一个包的类中可以访问。

Java的访问权限是基于类的,而不是基于对象的:

classParent

{privateString name;protectedString sex;public intage;publicParent()

{

name= "parent";

}public voidmethod1()

{

name= "Jack";

Parent wife= newParent();

wife.name= "Lily"; //可以访问wife的private属性name

}

}

publicclass Child extendsParent

{

}public classTest //Test类和Parent类、Child类不在一个包中

{public static voidmain(String[] args)

{

Child child= newChild();

child.sex= "boy"; //不能访问child的属性sex,因为在Test类中,而Test类不是Parent类的子类(这句注释不准确)

child.age = 3; //可以在任何类中访问age属性

}

}

上面的例子中有个错误,即使Test类继承自Parent类,child对象也无法访问sex属性。原因是,与父类不在同一个包中的子类只能访问自身从父类中继承来的protected属性,而不能访问父类实例以及父类的其他子类的实例的protected属性。

与此类似的问题是,在其他类中不能访问Object类的protected的clone方法,尽管Object类是所有类的超类。

参考资料 《Java核心技术》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值