美文网首页
Java中重写(Override)和重载(Overload)

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

作者: 小豆oo | 来源:发表于2019-01-18 20:44 被阅读0次

    一、详解

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

    相关文章

      网友评论

          本文标题:Java中重写(Override)和重载(Overload)

          本文链接:https://www.haomeiwen.com/subject/kqjodqtx.html