5.1类的访问权限
在定义类时,可以使用public 修饰为公共类.
A包中的A类想使用B包中的B类,B类就需要定义公共类
如果累定义时,没有使用public 修饰为公共类,这个类就只能在当前包中使用.
5.2类成员的访问权限
访问权限修饰符 | 当前类 | 当前包 | 派生类 | 任意位置 |
---|
private(私有的) | 可以 | 不 | 不 | 不 |
default(不写修饰符) | 可以 | 可以 | 不 | 不 |
protected(受保护的) | 可以 | 可以 | 可以 | 不 |
public(公共的) | 可以 | 可以 | 可以 | 可以 |
重写
- 为什么需要进行方法的重写??
当子类从父类继承的方法,不能满足子类需求时,可以进行方法重写
方法重写之后,可以实现动态多态 - 重写规则:
1)子类方法签名(方法名和方法参数列表)必须和父类方法签名一致
2)如果方法的返回值类型不是引用类型,子类方法的返回值类型和父类的返回类型一致
如果方法的返回值类型是引用了类型,子类方法的返回值类型可以是父类方法返回值类型的子类
3)子类方法的访问权限可以比父类方法的访问权限更宽泛
如果父类方法是public,子类犯法只能用public修饰
如果父类方法是protected,子类方法可以使用protected/public修饰
如果父类方法是默认的,没有访问权限修饰符,如果子类和父类在同一个包中,子类方法可以默认/protected/default
如果父类方法是默认的,没有访问权限修饰符,如果子类和父类不在用一个包中,不能重写
如果父类方法是私有的,不能重写
4) 如果父类有异常抛出,子类重写的方法可以抛出父类异常或者父类异常的子异常 - 可以使用注解@override来验证发重写是否正确