在Java中,修饰符的作用是用来定义类、方法法或者变量的访问权限,它主要分两大类:
访问修饰符: 限定类、属性或方法是否可以被程序里的其他部分访问和调用的修饰符。private - default - protected - public
非访问修饰符: 用来修饰或者辅助功能,例如 static、final、abstract、synchronized等。
外部类修饰符: public或者为default
方法、属性修饰符:private、default、protected、public
public - 公开对外部可见
protected - 对包和所有子类可见
default - 对类内部和同一包內
private - 仅对类内部可见
接着,将通过以下实例说明各个的用法
创建一个 demo 的 包 和 Father 类,创建一个 test() 的方法 。( 级别为:default)
再创建一个 test 的包 和 MainTest 的 类, 当在 MainTest 里 调用 Father 类的 test() 方法时,会有报错。原因: test() 方法级别为 default,只适用于当前类和同一包內调用,当不同包调用时,违反了调用法则而导致报错。
当对 Father 类的实例化时,是没有问题的。
同理,如果把 Father 类 的 public 去掉,级别变成 default 的情况下,再次 进行 Father 类的实例化时,会有报错。
在保持 default 级别情况下,解决报错的方法有两种:
1. 把 MainTest 这个类 直接移到 demo 包里,那么它就和 Father 类在同一个包里,符合 default 调用 法则。
2. 在Father 类改回 public 级别,把 MainTest 移回 test 的包里,用 继承类的方法 extends 去继承 Father 类。
MainTest 进行实例化后,就作为子类去继承 Father 类,调用 Father 的 test() 方法后,会出现报错。原因:default 级别情况下,当不同包的子类调用时,违反了调用法则而导致报错。
为 Father 类 test() 添加 public 或者 protected 级别,就可以正常在 MainTest 类中 调用它。
当 test() 方法 设为 private, 只能在当前类里调用。
下一期将讲解这4个级别的属性应用