how2j.cn


工具版本兼容问题
成员变量有四种修饰符
private 私有的
package/friendly/default 不写
protected 受保护的
public 公共的

比如public 表示公共的
public String name;

而maxHP 没有修饰符即代表package/friendly/default
float maxHP

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



18分51秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



示例 1 : 类之间的关系   
示例 2 : private 私有的   
示例 3 : package/friendly/default 不写   
示例 4 : protected 受保护的   
示例 5 : public 公共的   
示例 6 : 总结   
示例 7 : 那么什么情况该用什么修饰符呢?   

示例 1 :

类之间的关系

类和类之间的关系有如下几种:
以Hero为例
自身:指的是Hero自己
同包子类:ADHero这个类是Hero的子类,并且和Hero处于同一个包下
不同包子类:Support这个类是Hero的子类,但是在另一个包下
同包类: GiantDragon 这个类和Hero是同一个包,但是彼此没有继承关系
其他类:Item这个类,在不同包,也没有继承关系的类
类之间的关系
示例 2 :

private 私有的

使用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/friendly/default 不写
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; 血量
protected 受保护的
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; 姓名
任何地方,都可以访问
public 公共的
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,那么到底什么情况该用什么修饰符呢?

1. 属性通常使用private封装起来
2. 方法一般使用public用于被调用
3. 会被子类继承的方法,通常使用protected
4. package用的不多,一般新手会用package,因为还不知道有修饰符这个东西

再就是作用范围最小原则
简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-08-28 按在地上摩擦~
脑子转不过来



摩擦摩擦
/**
 * 修饰符
 * @author Chen
 * 成员变量有四种修饰符 
 * private 私有的 
 * package/friendly/default 不写 
 * protected 受保护的 
 * public 公共的 
 */

public class G01_Modifier {
	public static void main(String[] args) {
		System.out.println("没有练习!");
	}
}

/**
 * 那么什么情况该用什么修饰符呢?
 * 从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?
 * 1. 属性通常使用private封装起来
 * 2. 方法一般使用public用于被调用
 * 3. 会被子类继承的方法,通常使用protected
 * 4. package用的不多,一般新手会用package,因为还不知道有修饰符这个东西
 * 再就是作用范围最小原则
 * 简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。
 * 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了 
 */

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-07-20 【学习总结】
王者号:情兽妲己
1. 属性通常使用private封装起来 2. 方法一般使用public用于被调用 3. 会被子类继承的方法,通常使用protected








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-03-29 package、protected修饰的属性在非同包子类中不能访问
2017-12-27 继承和访问的区别是什么,属性可以继承不能访问时什么意思?
2017-09-14 关于private field的一点疑惑
2017-08-03 示例4:protected代码的注释有问题
2016-12-29 不同包的子类继承了另一包的Hero类,可以继承protected修饰的属性name,但为什么却不能使用Hero h=new Hero(),然后使用h.name 呢,提示一定要用public修饰
2016-04-22 protected属性被同包子类继承之后的访问权限




提问之前请登陆
关于 JAVA 基础-类和对象-访问修饰符 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图