美文网首页
java编程思想笔记--多态

java编程思想笔记--多态

作者: theo_NI | 来源:发表于2018-11-14 20:46 被阅读0次

java编程思想笔记--多态

在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。

​ --java编程思想

  • 个人理解

    多态由数据抽象(例如抽象类,接口),继承实现

  • 多态实现的必要条件:继承,重写或重载,向上引用

  • 核心关键词:多态的作用,向上转型,方法调用绑定,缺陷

多态的作用

  • 消除类型间的耦合关系,提高代码复用性

    • 简单的说就是能少写代码,方便维护,逼格高

      /*背景介绍:wind,stringed,brass都继承于instrument,上面是不使用多态的编写方式,下面使用多态*/
      public class Music{
      
             public static void tune(Wind i){
      
                    i.play(Note.MIDDLE_C);
      
             }
      
          public static void tune(Stringed i){
      
                    i.play(Note.MIDDLE_C);
      
             }
      
          public static void tune(Brass i){
      
                    i.play(Note.MIDDLE_C);
      
             }
      
            
      
      }
      //====================================分割线===============================
      public class Music{
      
             public static void tune(Instrument i){
      
                    i.play(Note.MIDDLE_C);
      
             }
      
      }
      
      //上下两部分的代码量差距看到了吗?!!
      

向上转型

  • 概念:对某个对象的引用视为对其基类型(他爸)的引用

    • 简单的说:做儿子的类想当老子,java说ok!!

      class Grain {
        public String toString() { return "Grain"; }
      }
      
      class Wheat extends Grain {
        public String toString() { return "Wheat"; }
      }
      
      class Mill {
        Grain process() { return new Grain(); }
      }
      
      class WheatMill extends Mill {
        Wheat process() { return new Wheat(); }
      }
      
      public class CovariantReturn {
        public static void main(String[] args) {
          Mill m = new Mill();
          Grain g = m.process();
          System.out.println(g);
          m = new WheatMill(); //向上转型!!
          g = m.process();
          System.out.println(g);
        }
      } 
      /* Output:
      Grain
      Wheat
      *///:~
      

方法的绑定

  • 绑定的概念:一个方法调用同一个方法主体关联起来(没搞懂
  • 前期绑定:程序执行前进行绑定,面向过程语言的标配,例如C语言就只有前期绑定
  • 后期绑定:也称为动态绑定,运行时绑定,含义是程序运行是根据对象类型进行绑定
    • Java除了static方法和final方法外(private属于final),其他所有方法都是后期绑定
    • 备注:最后根据设计决定是否使用final,不要处于性能优化使用final,效果不明显
    • 绑定仅在方法中,与变量无关

多态的不足

  • 无法覆盖私有方法,不法继承,也就无从多态
  • 类的变量与私有方法无法多态

相关文章

  • java编程思想笔记--多态

    java编程思想笔记--多态 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。​ ...

  • Java编程思想学习笔记(8)

    Java编程思想学习笔记(8) Java多态 多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。 同时...

  • Java编程思想笔记五:多态

    这一章节主要介绍了 Java 语言多态的概念和特性,具体内容如下: 1.什么是多态 我们先看这样一个例子:有三种乐...

  • java编程思想(一)---笔记

    《java编程思想》这本书被视为java经典,再此总结一些重点知识: 1.java多态性理解 所谓多态就是指程序中...

  • Java编程思想笔记8.多态

    点击进入我的博客 在面向对象的程序设计语言中,多态是继数据抽象(封装)和继承之后的第三种基本特征。多态通过分离做什...

  • 《Java编程思想》笔记4:继承,多态

    本篇关注:继承(第7章),多态(第8章) 组合 composition:将现有类的对象引用放于新类中。 继承 in...

  • Java编程思想(七) 多态

    多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。 封装通过合并特征和行为来创建新的数据类型。实现隐藏则...

  • java回调

    一 . 前言 正在看java编程思想,感觉对自己提升很大,重新总结下回调。 二.java 多态和向上转型 下面的程...

  • 2021-09-15 JAVA编程思想

    Java编程思想重点笔记(Java开发必看)[https://www.cnblogs.com/softwareof...

  • 2019-07-23

    java 基础 基础语法: 1-2天 编程思想: 面向对象 封装,继承,多态 高级应用 : 线程;IO; 网络 J...

网友评论

      本文标题:java编程思想笔记--多态

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