Java自学-类和对象 访问修饰符
java的四种访问修饰符
成员变量有四种修饰符
private 私有的
package/friendly/default 不写
protected 受保护的
public 公共的
比如public 表示公共的
public string name;
而maxhp 没有修饰符即代表package/friendly/default
float maxhp
示例 1 : 类之间的关系
类和类之间的关系有如下几种:
以hero为例
自身:指的是hero自己
同包子类:adhero这个类是hero的子类,并且和hero处于同一个包下
不同包子类:support这个类是hero的子类,但是在另一个包下
同包类: giantdragon 这个类和hero是同一个包,但是彼此没有继承关系
其他类:item这个类,在不同包,也没有继承关系的类
示例 2 : private 私有的
使用private修饰属性
自身:是可以访问的
同包子类:不能继承
不同包子类:不能继承
同包类:不能访问
其他包类:不能访问
注: 红色字体,表示不可行
package charactor; import property.weapon; public class hero { //属性id是private的,只有hero自己可以访问 //子类不能继承 //其他类也不能访问 private int id; string name; float hp; float armor; int movespeed; public void equip(weapon w) { } }
示例 3 : package/friendly/default 不写
没有修饰符即代表package/friendly/default
float maxhp; 血量上限
package charactor; import property.weapon; public class hero { private int id; string name; // 无修饰符的属性 hp // 自己可以访问 // 同包子类可以继承 // 不同包子类不能继承 // 同包类可以访问 // 不同包类不能访问 float hp; float armor; int movespeed; public void equip(weapon w) { } }
示例 4 : protected 受保护的
受保护的修饰符
protected float hp; 血量
package charactor; import property.weapon; public class hero { private int id; string name; // protected饰符的属性 hp // 自己可以访问 // 同包子类可以继承 // 不同包子类可以继承 // 同包类可以访问 // 不同包类不能访问 protected float hp; float armor; int movespeed; public void equip(weapon w) { } }
示例 5 : public 公共的
公共的修饰符
public string name; 姓名
任何地方,都可以访问
package charactor; import property.weapon; public class hero { private int id; // public的属性 name // 自己可以访问 // 同包子类可以继承 // 不同包子类可以继承 // 同包类可以访问 // 不同包类可以访问 public string name; protected float hp; float armor; int movespeed; public void equip(weapon w) { } }
示例 6 : 总结
示例 7 : 那么什么情况该用什么修饰符呢?
那么什么情况该用什么修饰符呢?
从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?
- 属性通常使用private封装起来
- 方法一般使用public用于被调用
- 会被子类继承的方法,通常使用protected
- package用的不多,一般新手会用package,因为还不知道有修饰符这个东西
再就是作用范围最小原则
简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了
上一篇: 山药黄花菜汤怎么做,功效又有哪些
推荐阅读
-
Java之反射第十八天( --反射----类的加载--获取对象属性( 成员变量和方法)-- 构造方法 )
-
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
-
使用Java7的Files工具类和Path接口来访问文件的方法
-
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
-
Java中类、对象、封装、继承和多态(详细阐述)
-
java类和对象详解
-
java对象是什么意思(java中的对象和类理解)
-
Java中类、对象、封装、继承和多态(详细阐述)
-
Java自学-类和对象 枚举类型
-
java对象是什么意思(java中的对象和类理解)