Java中重写(Override)和重载(Overload)

2019-01-18  本文已影响0人  小豆oo

一、详解

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())

上一篇下一篇

猜你喜欢

热点阅读