面向对象三大特性:封装,继承,多态(二、多态)

多态

  一,多态的概念

  多态(polymorphism), 是指一个名字可以有多种语义。在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法。通常有两种途径实现多态:方法的重载和覆盖。

  多态性允许以统一的风格处理已存在的变量及相关的类。多态性使得向系统里增加新功能变得容易。继承性和多态性是降低软件复杂性有有效技术。

  二,多态的实现

  1、方法的重载

  方法重载时:

  • 参数必须不同。参数个数不同或类型不同。
  • 返回值可以相同,也可以不同。

  重载的价值在于它允许通过使用一个变通的方法名来访问一系列相关的方法。当调用一个方法时,具体执行哪一个方法根据调用方法的参数决定。JAVA运行系统仅执行与调用的参数相匹配的重载方法。尽管JAVA并没有规定重载方法之间必须有联系,但习惯上,为了程序的可读性,最好重载相同含义的方法。

  

例如,输出语句print的参数可以是Java中的任何基本类型,其实就是对print()方法的重载:

public void print(boolean b)

public void print(char c)

public void print(int i)

public void print(long l)

public void print(float f)

public void print(double d)

  • 构造方法的重载

  子类继承超类中所有的成员变量和成员方法,但子类不能继承超类的构造方法。解决办法有两种:一是使用默认的构造方法,二是编写多个直接的构造方法。

  2、方法的覆盖

  在前述的规则中有一条:子类继承超类中所有可被子类访问的成员方法,如果子类方法与超类方法同名,则不能继承,此时子类的方法称为覆盖(override)了超类中的那个方法。在进行酸辣时,应注意以下三点:

  • 子类不能覆盖超类中声明为final或static的方法。
  • 子类必须覆盖超类中声明为abstract的方法,或者子类也声明为abstract
  • 子类覆盖超类中同名方法时,子类方法声明必须与超类被覆盖方法的声明一样。即public或protected关键字不能变。

  方法的覆盖(method overriding)与类的继承有密切的关系。覆盖体现了子类补充或改变超类方法的能力。通过覆盖使一个方法在不同的子类间表现出不同的行为。

  在面向对象系统中,对象封装了方法。利用诸如重名、重定义让名对象自己去解释执行,而这种多义性不会带来混乱。这对于需求分析、模型设计是极为有利的,因这这些工作不需要涉及具体的数据结构和类型,只是着重于提示系统的逻辑合理性。

  

  •   this和super引用的用法区别。

this有两种用法:既可以指代对象自身,如s1=this;也可以通过this引用本类的成员变量和方法,如this.count和this.toString()。

super只有一种用法,即通过super引用超类中的成员变量和方法,如super.count和super.print(),而不能单独使用super,如sl=super是非法的。因为子类与超类存在继承关系,子类从超类继承变量和方法,但子类对象与超类对象却不存在类似继承的对应关系,所以super无所指。

时间: 2025-01-31 06:45:38

面向对象三大特性:封装,继承,多态(二、多态)的相关文章

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

Java面向对象三大特性 封装 继承 多态

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

[.net 面向对象编程基础] (11) 面向对象三大特性——封装

[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承.多态. 1.封装概念 封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装.这样的方法包含在类中,通过类的实例来实现. 2.封装的优点 A.良好的封装能够减少耦合(比如实现界面和逻辑分离) B.可以让类对外接口不变,内部可以实现自由的修改 C.类具有清晰的对外接口,使用者只需调用,无需关心

面向对象三大特性--封装

//面向对象三大特性//1.封装//目的:让类更加安全,不让外接直接访问类里边的成员变量/*class Ren { private $Name; private $Age; private $Sex; }*/ /*function __construct($s) { $this->Name = $s; } function Say() { echo $this->Name."正在说话!";} function __destruct() { echo "该对象销毁了