专栏首页Java患者Java基础知识(四)--多态

Java基础知识(四)--多态

多态

什么是多态

  • 多态是同一个行为具有多个不同表现形式或形态的能力

多态的前提

  • 要有继承/实现关系
  • 要有方法重写
  • 要有父类引用指向子类对象

多态的成员特点

  • Animal a = new Dog();

当代码这个样子的时候,(也就是说当编译类型和运行类型不同)多态就产生了.对象a具有两种类型

编译类型: 声明对象变量的类型,Animal,表示把对象看成什么类型

运行类型:对象的真实类型,Dog

多态中的成员访问特点之成员变量

  • 编译看左边,运行看左边

多态中的成员访问特点之成员方法

  • 编译看左边,运行看右边

多态中的成员访问特点之静态成员方法

  • 编译看左边,运行看左边
  • 静态和类相关,算不上重写,所以,访问还是左边的
  • 只有非静态的成员方法,编译看左边,运行看右边

案例

public class Fu {
    int num = 5;
    static void method1(){
        System.out.println("fu类中的method1");
    }
    void method2(){
        System.out.println("fu类中的method2");
    }
}

public class Zi  extends Fu{
    int num = 8 ;
    static void method1(){
        System.out.println("zi method1");
    }
    void method2(){
        System.out.println("zi method2");
    }
}
public class DuoTaiDemo {
    public static void main(String[] args){
        Fu f = new Zi();
        System.out.println(f.num);//5,与父类一致
        f.method1();//fu类中的method1,与父类一致
        f.method2();//zi method2,编译时与父类一致,运行时与子类一致
        Zi z = new Zi();
        System.out.println(z.num);//8,与zi类中的method一致
        z.method1();//zi method1
        z.method2();//zi method2
    }
}
5
fu类中的method1
zi method2
8
zi method1
zi method2

多态的好处和弊端

  • 提高了代码的维护性(继承保证)
  • 提高了代码的扩展性(多态保证)
  • 不能使用子类特有的属性和行为(弊端)

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础知识笔记四(详细)

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

    用户7656790
  • Java基础知识(十)--多线程

    用户7386338
  • Git基础知识(四)

    经常可以看到一些软件的版本是V1.0,V2.0这样的,Git也支持给历史的某个提交打上这样一个东西,也就是标签。

    zx钟
  • JAVA基础知识

    Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。  Java 被设计成允许应用程...

    用户3003813
  • java基础知识

    Vector、Stack、HashTable、ConcurrentHashMap、Properties

    仇诺伊
  • Java多线程通关———基础知识

    1 线程:进程中负责程序执行的执行单元 线程本身依靠程序进行运行 线程是程序中的顺序控制流,只能使用分配给程序的资源和环境

    后端码匠
  • Java基础知识(十一)--多线程

    用户7386338
  • JAVA多线程并发的基础知识

    并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写...

    用户5640963
  • java基础知识01

    正所谓万丈高楼平地起,有了扎实的基础才能进阶更深奥的课程,才能让你后面的走得更轻松,学Java亦是如此!所以千万不能忽略基础的重要性,下面一起来温习一下那些容易...

    贪挽懒月
  • java基础知识02

    1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。用length()方法获取长度。

    贪挽懒月
  • java(一)基础知识

    西西嘛呦
  • Java基础知识(二)

    ​ 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Sma...

    shimeath
  • Java基础知识(一)

    JRE: java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。

    shimeath
  • Java基础知识(二)

    用户7386338
  • Java基础知识(三)

    用户7386338
  • HTTP基础知识知多少

    1.《图解HTTP》; 2.<一个http请求的详细过程> http://www.cnblogs.com/yuteng/articles/1904215.ht...

    静默加载
  • Java基础——多态Polymorphic

    方法覆写:子类覆写父类的方法,Override 多态: 针对某个类型的方法调用,其真正执行的方法取决于运行时实际类型的方法 对某个类型调用方法,执行的方法...

    羊羽shine
  • Java基础知识(十二)--多线程通信

    用户7386338
  • java基础知识----循环

    小小咸鱼YwY

扫码关注云+社区

领取腾讯云代金券