Java入门(十九)——访问控制权限与覆盖
目录
访问控制权限
* 内容:
- public 表示公开的,在任何位置都可以访问
- protected 同包、子类可以访问
- 缺省 只有同包可以访问
- private 表示私有,只能在本类中访问
- 访问控制权限修饰符可以修饰类、变量、方法
- 当某个数据只希望子类使用,使用protected
- 修饰符的范围:private<缺省<protected<public
* 访问控制权限修饰符可以修饰:
属性(4个都能用)
方法(4个都能用)
类(public和默认都能用,其他不行)
接口(public和默认都能用,其他不行)
……
覆盖
- 又称方法重写
- 使用对象:当前父类中的方法已经无法满足当前子类的业务需求,子类有比要将父类中继承过来的方法进行重新编写,
* 使用条件:
- 方法重写方式在具有继承关系的父子类之间
- 方法重写的时候:返回值类型相同,方法名相同,形参列表相同
- 方法重写的时候:访问权限不能更低,可以更高
- 方法重写的时候:抛出异常不能更多,可以更少
- 建议粘贴复制,避免出错.如果不一样则视作新的方法。
* 注意:
- 私有方法不能继承,所以不能覆盖
- 构造方法不能继承,所以不能覆盖
- 静态方法不存在覆盖
- 覆盖只针对方法,不谈属性
- @override是为了子类在覆盖时,避免一个直接调用
范例代码
class A{
public void s(int a,int b) {
int c=a+b;
System.out.println(c);
}
public void p() {
String i="hello";
System.out.println(i);
}
}
class B extends A{
public void p() {//整个方法复制粘贴,修改里面的内容,即完成覆盖
String i="你好";
System.out.println(i);
}
}
class C extends A{
public void p(String i) {
System.out.println(i);
}
}
public class Override {
public static void main(String[] args) {
A a=new A();
B b=new B();
C c=new C();
a.s(10, 20);
a.p();
b.s(1, 2);
b.p();
c.s(2, 1);
c.p();
c.p("哈喽");
}
}