关于Java多态的初步学习XII点

一、多态的概念

1.面向对象三大特性:封装、继承和多态。

2.多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

举一个生活中通俗易懂的例子理解多态的现实意义:

小灰灰既是一只狼,同时也是灰太狼的儿子,羊村的学生。

这里灰太狼的儿子和狼都是小灰灰父类的子类。

二、多态存在的前提

1.需要有继承关系

2.需要有方法覆盖

3.父类引用指向了子类的实例

三、多态的特点

1.可替换性(substitutability)

多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

2.可扩充性(extensibility)

多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。

3.接口性(interface-ability)

多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

4.灵活性(flexibility)

它在应用中体现了灵活多样的操作,提高了使用效率。

5.简化性(simplicity)

多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

四、多态的转型

多态的转型分为向上转型和向下转型。

E·g:父类Parent,子类Child

父类的引用指向子类对象:Parent p=new Child();

向上转型:多态本身就是向上转型过的过程,即将子类对象地址赋值给父类引用,能够写出通用的代码,做出通用的编程,统一调用标准。

Parent p = new Child();//向上转型,此时,p是Parent类型

向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,即由父类型转为子类型。这种强制转型的方法使用得较少。

Child c = (Child)p;//此时,把Parent类型的p转成小类型Child

五、关于多态的实例

public class LianXi1_2 {

//使用多态

public static void main(String[] args) {

//创建灯泡对象

RedBulb r1=new RedBulb();

GreenBulb g1=new GreenBulb();

//创建台灯对象

Lamp l1=new Lamp();

//给台灯对象的属性赋值

l1.b=r1;

l1.b=g1;

//调用台灯对象的方法

l1.on();

}

class Lamp{//台灯类

//灯泡是台灯的一个数据

//定义父类类型的成员变量

Buib2 b;

void on() {

if (b!=null) {b.light();}

}

}

//抽取子类中共同数据和功能形成父类

abstract class Buib2{

abstract void light();

}

//让所有子类继承父类

class RedBulb extends Buib2{

//根据子类需求 实现父类方法

void light() {

System.out.println("红灯泡 发光:红");

}

}

class GreenBulb extends Buib2{

void light() {

System.out.println("绿灯泡 发光:绿");

}

}

(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论