Java多态性

太过爱你忘了你带给我的痛 2024-04-01 18:11 251阅读 0赞

用一句话概括就是:事物在运行过程中存在不同的状态。
多态的存在有三个前提:

1.要有继承关系
2.子类要重写父类的方法
3.父类引用指向子类对

但是其中又有很多细节需要注意。首先我们定义两个类,一个父类Animal,一个子类Cat。
父类Animal

  1. class Animal{
  2. int num = 10;
  3. static int age = 20;
  4. public void eat(){
  5. System.out.println("Animal吃饭");
  6. }
  7. public static void sleep(){
  8. System.out.println("Animal睡觉");
  9. }
  10. public void run(){
  11. System.out.println("Animal跑步");
  12. }
  13. }

子类Cat

  1. class Dog extends Animal{
  2. int num = 200;
  3. static int age = 300;
  4. public void eat(){
  5. System.out.println("Dog吃饭");
  6. }
  7. public static void sleep(){
  8. System.out.println("Dog睡觉");
  9. }
  10. public void readBook(){
  11. System.out.println("Dog阅读书");
  12. }
  13. }

测试类

  1. public static void main(String[] args) {
  2. Animal animal = new Dog();
  3. animal.eat();
  4. animal.sleep();
  5. animal.run();
  6. System.out.println(animal.num);
  7. System.out.println(animal.age);
  8. }

以上的三段代码充分体现了多态的三个前提,即:
1.要有继承关系
Dog类继承了Animal类
2.子类要重写父类的方法
子类重写(override)了父类的两个成员方法eat(),sleep()。其中eat()是非静态的,sleep()是静态的(static)。
3.父类引用指向子类对
测试类中 Animal animal = new Dog();语句在堆内存中开辟了子类(Dog)的对象,并把栈内存中的父类(Animal)的引用指向了这个Cat对象。
在这里插入图片描述
子类Dog重写了父类Animal的非静态成员方法animal.eat();的输出结果为:Dog吃饭。
子类重写了父类(Animal)的静态成员方法animal.sleep();的输出结果为:animal睡觉
未被子类(Dog)重写的父类(Animal)方法animal.run()输出结果为:animal奔跑

总结

  • 成员变量
    编译看左边(父类),运行看左边(父类)
  • 成员方法
    编译看左边(父类),运行看右边(子类)。动态绑定
  • 静态方法
    编译看左边(父类),运行看左边(父类)。

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    多态性: 对象在运行过程中的多种形态。 方法的重载与重写。 对象的多态性。 用父类的引用指向子类对象(用大的类型去接受小的类型,向上转型、自动转换) pa

    相关 JAVA

    面向对象的三大特性:封装、继承、多态。前两者都比较好理解,只有多态会比较难以理解一些。很早之前在初学java时使用了《码农翻身》中的有趣的例子,对多态进行过一些总结,写过一篇博

    相关 Java

    Java多态性性主要体现在: 1、方法的多态性 (1)方法的重载: 同一个方法名称,根据传入参数类型及个数个数调用不同的方法体 (2)方法的覆写: 同一个方法名

    相关 Java

    什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同

    相关 Java理解

    Java中多态性的实现 什么是多态 1. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的

    相关 java基础之

            面向对象特征:多态性          (1)多态性:一个事物的多种形态。如:方法的重载和重写、子类对象的多态性(虚拟方法调用:父类引用指向子类的对象实体,

    相关 JavaJava什么是

    多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同