一、详解
Java中重写(Override)和重载(Overload)
目录:
1.重写(Override)
1.1 重写的定义
1.2 重写的规则✨
1.3 Super关键字的使用
2.重载(Overload)
2.1 重载的定义
2.2 重载的规则✨
3.Override和Overload的区别
3.1 Override实质是子类与父类的一种多态表现——”随机应变“
3.2 Overload实质是一个类的多态表现——”父子差异“
二、要注意的点
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象。。。①
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
b.bark();//报错
((Dog)b).bark();//执行Dog类的方法。。。②
}
}
原因:
在①处声明对象b时,引用类型为Animal,实际类型为Dog。由于在编译阶段,知识检查参数的的引用类型(Animal);在运行阶段,Java虚拟机(JVM)才会指定对象的类型(Dog)并且运行该对象的方法。上面的代码在编译阶段,b的引用类型Animal中没有bark方法,所以报错
在②处,可以通过强制类型转换访问父类(Animal)中没有的方法(bark())-这里实质上还是调用的是子类(Dog)中的方法(bark())
网友评论