方法的重写
介绍:就是子类中有一个方法,和父类中的某个方法的返回类型,方法名,参数列表一样,那么就是说子类的这个方法覆盖了父类(不仅仅是直接父类的关系 也可以是爷爷类…)的方法
class Animal {
public void cry() {
System.out.println("动物叫唤..");
}
}
class Dog extends Animal {
//1. 因为 Dog 是 Animal 子类
//2. Dog 的 cry 方法和 Animal 的 cry 定义形式一样(名称、返回类型、参数)
//3. 这时我们就说 Dog 的 cry 方法,重写了 Animal 的 cry 方法
public void cry() {
System.out.println("小狗汪汪叫..");
}
}
public class Override01 {
public static void main(String[] args) {
//演示方法重写的情况
Dog dog = new Dog();
dog.cry();//ctrl+b 定位到dog.cry()
}
}
//运行结果
小狗汪汪叫..
细节
-
子类方法和父类方法定义形式一样(名称、参数)
-
子类方法和父类方法的返回类型一样,或者说 返回类型是父类的子类
//比如说 // public Object getInfo() 和 public String getInfo() 和 //其中 String 是 Object 的子类
3.子类的方法不能缩小父类方法的访问权限 public > protected >默认 >private
void sakOK(){} pubilic void sakOK(){}
重载和重写的区别
名称 | 发生范围 | 方法名 | 形参列表 | 返回类型 | 修饰符 |
---|---|---|---|---|---|
重载 (overload) | 本类 | 必须一样 | 类型,个数,顺序至少有一个不同 | 无要求 | 无要求 |
重写(override) | 父子类 | 必须一样 | 相同 | 子类的重写的方法,返回类型和父类一致,或者是其父类 | 子类的额方法不能缩小父类的访问范围 |