`
tibaloga
  • 浏览: 873226 次
文章分类
社区版块
存档分类
最新评论

java的多态认识

 
阅读更多

Java中重要的一个概念就是多态,多态也是面向对象的核心之一。

多态(Polymorphism)是面向对象(Object-Oriented,OO)思想"三大特征"之一,其余两个分别是封装(Encapsulation)和继承(Inheritance)--可见多态的重要性。或者说,不懂得什么是多态就不能说懂得面向对象。

什么是多态那??刚开始了解的很少,看完了视频,通过例子和网上的查询对多态了解稍微深入了点。多态:父类引用指向子类对象,即是某个父类可以有很多不同子类,但这些子类重写了父类中的方法(即覆盖,不同子类有不同的实现方法),当在使用父类对象的的地方使用了子类对象,从而调用了不同实现方法,达到不同效果。一个对象可以实现很多对象的功能,即是多态。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态

多态的优点:使用多态可以解决项目中紧偶合的问题,提高程序的课扩展性.是OCP原则(开放封闭原则)的一个具体的实现。多态是指程序中同名的不同方法共存的情况。多态是面向对象程序设计的又一个特性。我们知道,面向过程的程序设计中,过程或函数各具有一定的功能它们之间是不允许重名的;而面向对象程序设计中,则要利用这种多态来提高程序的抽象性,突出Java语言的继承性。面向对象的程序中多态的情况有多种,可以通过子类对父类方法的覆盖实现多态,也可以利用重载在同一个类中定义多个同名的不同方法。 多态的特点大大提高了程序的抽象程度和简洁性,更重要的是它最大限度地降低了类和程序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以很好地共同工作。这个优点,对程序的设计、开发和维护都有很大的好处。

Java中的object是所有类的基类,所有的类都继承object,比如在Object类中的equals(Objectobj)方法中,参数是个Object类型的参数.因为Object是Java中所有类的基类.,但是才传入参数的时候,可以传入任何一个类的对象

这就是多态的应用!实现多态是在编译期间实现的,这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动就找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。

动态绑定是指在“执行期间”,而非编译期间,判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。动态绑定则针对运行期产生的访问请求,只用到运行期的可用信息. 在面向对象的代码中,动态绑定意味着决定哪个方法被调用或哪个属性被访问,将基于这个类本身而不基于访问范围.

每个Java程序的引用变量(你这个里面引用变量就是c),都有编译类型和运行类型。编译就是将 .java文件编译成 .class文件,而运行就是 .class文件在操作系统上运行。

那么,这个时候,就出现多态了,一个类,他在编译时期和运行时期相同的动作却出现了不同的结果。Animal c= new Cat(); 如你的这个,a在编译的时候,只能调用Animal里面的方法和属性,而不能调用Cat的方法和属性。要注意的是,这样写Animal c= new Cat(); 后面的Cat必须继承Animal类,为了出现多态,Cat类中必须重写Animal的方法。所谓重写,就是要有和父类Animal中有一模一样的方法。

编译的时候,c调用的是自己的方法,我们可以预测结果,但是运行的时候,却出现了不同的结果,因为他这个时候调用的是Cat的方法,这就是多态。多态呢,面向对象吗,动物是总类,他又自己特定方法,继承与他的其他动物也有这个特定方法,但是他们方法结果不一样的。多态,也仅仅是指类的方法,与属性没有任何关系。Animal c = new Cat(); a这个父类引用变量指向了Cat这个子类对象,这就是多态。

以上程序的多态的优点还体现在可扩展性好,Lady类中我们传给Lady的是Animal类型,不知道宠物是dog还是cat?所以用Animal声明,最后传进去真正的对象之后,通过编译的时候,确定是cat还是dog,就可以了。

继续对多态的了解,只有在实践中才能真正了解多态的实际真谛,加油



分享到:
评论

相关推荐

    第21天,super,instanceof关键字的使用以及多态的认识

    第21天,super,instanceof关键字的使用以及多态的认识

    继承和多态

    Java面向对象编程的三大范式,封装,继承,多态,对初学者学习Java,认识Java提供了很好的参考

    JAVA基础知识课件 适合初学者

    JAVA基础知识课件 适合初学者 包括 ch1 Java概述 ch2 Java基本语法 ch3 类与对象 ch4-1 继承、接口和多态 ch4-2 继承、接口和多态 ch5 常用Java类库 ...看完受益匪浅,对JAVA有新认识,大学生期末考试可90+

    Java语言程序设计实验指导书

    1 Java运行环境 通过在不同环境编译运行一个Java编程环境,认识Java程序结构。 2 Java语言基本语法 编写程序,练习使用Java控制结构,实现循环嵌套与选择嵌套等复杂结构。 3 对象和类 编写程序实现类和对象的操作...

    java零基础入门-最新版2019(600元的课)

    在本步骤中,我们将带你逐步认识如何通过Java语言实现面向对象的三大特征继承、封装、多态,并编写具有面向对象思想的Java程序 3: Java常用工具类 在本步骤中,将会介绍最常用的Java工具类,包括异常、包装器类、...

    一篇文章快速了解Java中的继承与多态

    多态6.1 介绍6.2 动态绑定6.3 对象转换和instanceof()运算符6.3.1 对象转换6.3.2instanceof运算符 一. 继承 1.介绍 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和...

    java实验代码

    结语:在这一系列的实验中,我基本掌握了Java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    12.2.2 认识接口的代码组成 340 12.2.3 什么是接口 341 12.2.4 使用接口仅需一步——实现接口 342 12.2.5 接口——让类集多重类型于一身 344 12.2.6 简化recordTransport()方法 347 12.3 再探接口 349 12.3.1 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    12.2.2 认识接口的代码组成 340 12.2.3 什么是接口 341 12.2.4 使用接口仅需一步——实现接口 342 12.2.5 接口——让类集多重类型于一身 344 12.2.6 简化recordTransport()方法 347 12.3 再探接口 349 12.3.1 ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    head first java

    3 认识变量 声明变量 Primitive主数据类型 Java关键字 引用变量 对象的声明与赋值 可回收堆空间 数组 习题 4 对象的行为 操作对象状态的方法 方法参数与返回类型 值传递 Getters与Setters 封装 数组中的引用 习题 5 ...

    Java实验 上机指导

    包括的实验有1 1认识和熟悉Java编程环境 2 Java语言基础 3 面向对象基础 4 继承和多态 5抽象类接口 6图形用户界面 ………………

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    认识 Exception 18 什么是 Throwable 18 常⻅的 Exception 19 与 Exception 有关的 Java 关键字 19 什么是 Error 20 内部类 20 集合 20 ArrayList 21 Vector 21 LinkedList 21 Stack 21 HashSet 22 TreeSet 22 ...

    java基础案例与开发详解案例源码全

    1.2 认识Java语言3 1.2.1 Java语言特性3 1.2.2 JavaApplet4 1.2.3 丰富的类库4 1.2.4 Java的竞争对手5 1.2.5 Java在应用领域的优势7 1.3 Java平台的体系结构7 1.3.1 JavaSE标准版8 1.3.2 JavaEE企业版10 1.3.3 Java...

    有关Java面向对象问题整理汇总

    从20世纪60年代提出面向对象的概念到现在,它已经发展成为一种比较成熟的编程思想,其以人类习惯的思维方式,用对象来理解和分析问题,使开发软件的方法与过程尽可能接近人类认识的世界、解决问题的思维方法与过程。

    head first java 高清目录书签pdf版

    3 认识变量 4 对象的行为 5 超强力方法 6 使用Java函数库 7 对象村的优质生活 8 深入多态 9 对象的前世今生 10 数字很重要 11 有风险的行为 12 看图说故事 13 使用 Swing 14 保存对象 15 网络联机 ...

    AIC的Java课程1-6章

     课程目标  认识Java平台,了解java application和applet的开发,激发学员对Java编程语言的兴趣。  学习和掌握Java变量,运算符,控制结构,数组,方法等基本语法。  培养和建立面向对象编程...

Global site tag (gtag.js) - Google Analytics