java面试题-重载和重写
重载和重写方法是
java
多态性的不同表现
重载可以理解为多态的具体表现
重写是父类与子类之间多态性的一种表现
重载(overload)
- 发生在同一个类中
- 方法名必须相同
- 参数类型不同、个数不同、顺序不同
- 方法返回值和访问修饰符可以相同可以不同
代码
class Cat {
public void miao () {
System.out.println("miao");
}
public void miao (int num) {
for (int i = 0; i < num; i++) {
System.out.println("miao");
}
}
}
代码 – 构造函数的重载
class Cat {
private String name;
public Cat () {
}
public Cat (String name) {
this.name = name;
}
}
重写(override)
- 发生在父子类中
- 方法名、参数列表必须相同
- 返回值范围小于等于父类
- 抛出异常范围小于父类
- 访问修饰符(
public
private
protected
default
)范围大于等于父类 - 如果父类方法访问修饰符为private,则子类就不能重写该方法
代码
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
super.move(); // 应用super类的方法
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal b = new Dog(); // Dog 对象
b.move(); //执行 Dog类的方法
}
}