• 【Java】多态


    多态

      一个对象多种形态,就称它为多态(父类型的引用指向子类型的对象)

      一个表示自己的类,一个表示自己的父类

    多态特点:

      父类型的引用指向子类型的对象,表现的是子类的特征(把子类型的对象赋值给父类的对象)

      ps:编译看左边,运行看右边(多态编译时先看父类,运行时是表现new出来的子类的特征)

    而我们又为什么要是有多态呢?

    首先讲下封装和继承:

      封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,他把实现的细节影藏起来了,比如你在java中去实现一个类,这个类中提供了一些功能方法,你只需要知道你需要传递什么样的参数,会达到什么样的效果,实现细节在类中定义好了(类似于一个保护罩,防止一个类被其他类随意访问,控制访问,隐藏信息跟实现细节,提高安全性,从而使得代码模块化)

      而继承可以扩展已存在的代码模块,而目的就是为了代码重用。

     而使用多态呢?

      消除类型之间的耦合关系,可以分为一个一个的子模块,提高了代码的扩展性。是OOP原则的一个具体的实现

    --------------------------------------------------------------------------------------------------------------------

    instanceof关键字

      在使用多态的时候,如果子类有父类没有的方法,先用instanceof关键字判断一下是否是指定的类,再用类强制类型转换(例:Dog dog = (Dog)anim),转换为父类

    多态注意点(字段是不属于多态的)

      例 Animal  dog = new Dog();dog.name是使用Animal父类的,意思就是说,字段没有多态,只能调用字段前面对象类型的数据,编译时已经决定好了

    实例

      先创建一个多态,使用时,如果父类没有子类的方法,先将父类强制转换为子类,才能使用子类的方法(多态时,只能调用父类方法,想调用子类方法,得先将父类转换为子类)

  • 相关阅读:
    shell遍历文件夹并执行命令
    安装PIL的坑
    iptables不小心把127.0.0.1封了,导致redis连不上
    python读取中文
    不要在基类析构函数中调用纯虚函数,否则运行时会报错“pure virtual method called”
    阿里云64位centos6.3系统上编译安装redis
    Git
    Easy Mock
    Sortable
    几个框架
  • 原文地址:https://www.cnblogs.com/Cccc4/p/13143607.html
Copyright © 2020-2023  润新知