Java基础笔记26——覆盖
一、重写(overwrite)| 覆盖(override):对父类中继承过来的方法进行改造
条件:基于继承关系
原则:
1.方法名一致
2.参数列表一致(参数个数一致,参数类型一致,参数顺序一致)
3.返回值类型一致
4.子类的方法修饰符权限 >= 父类的方法修饰符权限
二、重载(overload):基于同一类,调用同一方法名,传入不同的参数,实现统一功能
条件:基于同一类
原则:
1.方法名一致
2.参数列表一致(参数个数不一致或者参数类型不一致或者参数顺序不一致)
3.返回值类型可以一致,可以不一致
Shift + Alt +S,选中Override/Implement methods:重写方法
例子:
Animal.java:
package com.lqh.chapter02; public class Animal { // 属性(成员变量) String color; String brand; int age; public Animal() { System.out.println("父类实例化---Animal"); } public Animal(String brand, String color, int age) { this.brand = brand; this.color = color; this.age = age; System.out.println("父类实例化---Animal"); } // 行为(成员方法) public void eat() { System.out.println("吃东西!"); } public void sleep() { System.out.println("睡觉!"); } public void getDetail() { System.out.println("brand:" + brand + "\tcolor:" + color + "\tage:" + age); } }
Cat.java:
package com.lqh.chapter02; public class Cat extends Animal{ //属性(成员变量) String area; public Cat(String brand, String color, int age, String area) { super(brand, color,age);//调用父类的有参构造函数 this.area = area; } public void getDetail() {//父类方法的重写 System.out.println("brand:" + brand + "\tcolor:" + color + "\tage:" + age + "\tarea" + area); } }
Test02.java:
package com.lqh.chapter02; public class Test02 { public static void main(String[] args) { Cat lihua = new Cat("狸花猫", "white and black", 2, "中国大陆"); /* * 当子类officer重写父类的getDetail方法之后,再调用该方法时,执行子类自己重写过的方法 */ lihua.getDetail(); } }
输出结果:
父类实例化---Animal
brand:狸花猫 color:white and black age:2 area中国大陆