package day34;
public class Father {
String name;
int age;
public void 输出(){
System.out.println("father");
}
}
package day34;
public class Son extends Father{
@Override
public void 输出() {
System.out.println("son");
}
}
package day34;
public class Application {
public static void main(String[] args) {
Son son=new Son();
Father father=new Son();
son.输出();
father.输出();
}
}

输出的结果为两个son 是因为子类重写了父类的方法
Father father=new Son(); 父类的引用指向子类
@Override//表明是重写
重写: 需要有继承关系,子类重写父类的方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符子类重写的方法的访问范围要 >= 父类方法的访问范围;
| 访问修饰符 | 本类 | 同包 | 子类 | 其他 |
|---|---|---|---|---|
| private | 可以 | 不可以 | 不可以 | 不可以 |
| 默认 | 可以 | 可以 | 不可以 | 不可以 |
| protected | 可以 | 可以 | 可以 | 不可以 |
| public | 可以 | 可以 | 可以 | 可以 |
注意 重写只和非静态方法有关
例如

当写静态方法的时候出现错误 删除 @Override后
关于静态方法如下代码
package day34;
public class Father {
String name;
int age;
public static void 输出(){
System.out.println("father");
}
}
package day34;
public class Son extends Father{
public static void 输出() {
System.out.println("son");
}
}
package day34;
public class Application {
public static void main(String[] args) {
Son son=new Son();
Father father=new Son();
son.输出();
father.输出();
}
}
输出的结果为

我们发现当方法为非静态方法的时候 Father father=new Son();只和左边有关
另外需要注意的是 idea的重写方法的快捷方式是 ALt+insert(有些电脑是Alt+insert+Fn)
然后点击下面的

或者直接ctrl+O 快速重写方法


















