java修饰符介绍
来源:互联网 发布:c语言static volatile 编辑:程序博客网 时间:2024/06/07 18:44
1.背景
今天在翻看head first java一书的时候,发现一些关于修饰符的细节没有注意到,下面将介绍一下。
2.四种访问权限说明
1.被public修饰的域和方法,不管在所属类所在的包还是在其他包,都可以被所属类或者所属类对象直接访问。
2.默认访问权限(又叫包访问权限 friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ )修饰的域或方法,只能在所属类的包被直接访问,在其他包不能直接访问。其访问的范围就如它名称一样—包访问权限,只能在所属包内访问。
3.被protected修饰的域或方法,其直接访问的范围与包访问权限的一样,基本没有差别。
4.被private修饰的域或方法,只能在自己所属类才能被直接访问。而即使另外一个类与其同在一个包中,前者也不能直接访问。
3.四种访问权限区别
4.实例
问题代码
/** * 描述: * 作者:袁伟倩 * 创建日期:2017-10-09 22:32. */public class Test { public static void main(String[] args) { Dog dog = new Dog(); dog.size = 40; dog.bark(); }}class Dog{ int size; void bark(){ System.out.println("汪汪"+ size +" 声"); }}
输出
汪汪 40 声
一开始我是问了一下这个问题:我说为什么下面的示例中size是40,二不是0。因为size是int,是普通数据类型而不是对象类型,不应该改变值,如果是对象,这样赋值为40是没有问题。后来小伙伴说,其实给类的成员变量赋值用=是没有问题的,不一定像javabean中的用set赋值。
这个牵扯到一个修饰符权限的问题。size是默认修饰符,在本类中是可以用=赋值的,如果是用private修饰就不对了。
另外根据上面修饰符的介绍,如果dog不作为内部类,作为和Test痛包下,也是可以的,
如果把Dog类提出到另外到com.test.two,看下什么效果
上图说明,对于包访问权限,只能在所属包内访问。
现在回到一开始说的问题,什么时候用set赋值,一般对于javabean对象,属性都是private,这个时候外部是访问不了的,需要用set方法给对象赋值。
- JAVA修饰符介绍
- Java修饰符介绍
- Java修饰符介绍
- java修饰符介绍
- java 修饰符和访问权限介绍
- java 修饰符和访问权限介绍01
- java的4种访问修饰符介绍
- 实例变量修饰符介绍
- java修饰符五(abstract 修饰符)
- Java修饰符与访问修饰符
- java修饰符(abstract 修饰符)
- java 修饰符(final 修饰符)
- java修饰符和访问修饰符
- java修饰符的修饰范围
- Java 修饰符小结
- Java修饰符
- Java的修饰符
- java中的修饰符
- 说说闭包吧~~
- 物联网可以从这3方面入手改变内容营销
- View的事件分发机制
- 学习权限文件类型等内容
- 策略模式
- java修饰符介绍
- web 基础(二)
- 在HTML中引入多个css文件
- 初入新环境所要了解的知识
- 盘龙数组
- SQL常见面试题
- SDL2.0放入线程进行播放遇到的问题
- linux文件与目录的操作处理
- 微信支付