十二、面向对象之多态

1.多态的概念
一种事物的多种体现形式
方法重载,方法的重写都是多态的体现

2.多态的体现形式
a.父类的引用指向子类的对象
b.接口的引用指向实现类的对象

总结:
a.如果使用了多态,将不能访问子类或者实现类中特有的属性和方法
b.在多态中访问成员变量时,如果子类中出现了和父类重名的成员变量,都访问的是父类中成员变量
c.在多态中调用了方法,只有子类重写了父类中的方法,会调用子类中重写之后的方法,如果没有重写,调用的是父类中的方法

3.使用多态的好处
a.提高了代码的可维护性
b.提高代码的扩展性
c.可以当做形参,接受任意子类的对象或者实现类的对象

4.对象的向上和向下转型
1>对象的向上转型【多态的体现】 父类或者接口 = 子类或者实现类
由子类类型转为父类类型
由实现类型转为接口类型

2>对象的向下转型【类型的强制转换】子类或者实现类 = 父类或者接口
由父类类型转为子类类型
由接口类型转为实现类型

Cat c2 = (Cat)a;
TestImp test1 = (TestImp)z;

注意:对象向下转型的时候,一定要注意类与类之间或者类与接口之间必定存在关系

时间: 2024-10-24 19:51:08

十二、面向对象之多态的相关文章

Go语言学习(十二)面向对象编程-结构体

1.结构体的初始化方式 例如自定义一个结构体 package main import( "fmt" ) type Rect struct{ //type和struct为关键字 x,y float64 //结构体成员 widh,height float64 } func (r *Rect) Area() float64{ return r.width * r.height } func main(){ //初始结构体的几种方式: rect1 := new(Rect) rect2 := &

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: ? ? ? ? ? ?将一些东西封装到一个地方,你还可以取出来 ? ? ? ? ? ?类设置静态属性, 设置一些方法 或者 对象, 对象可以在其对象封装一些属性 多态: ? ? ? ? ? ?python默认支持多态, 多态指的是一种事务具有多种形态 ? ? ? ? ? ?1.多态可以增加代码的灵活度: ? ? ? ? ? ?2.以继承和重写父类方法为前提: ?

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

sdut 面向对象程序设计上机练习十二(运算符重载)

面向对象程序设计上机练习十二(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 处理一个复数与一个double数相加的运算,结果存放在一个double型变量d1中,输出d1的值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){return real;} 输入 输入占两行: 第1行是一个复数的实部和虚部,数据以空格分开. 第2行是一个实数. 输出 输出占一行,复数的实部和实数之和,小数点后保

201771010134杨其菊《面向对象程序设计java》第十二周学习总结

第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分AWT组件都有其Swing的等价组件; Swing组件的名字一般是在AWT组件名前面添加一个字母"J",如:JButton,JFrame,JPanel等. 4.组件:通常把由Component类的子类或间接子类创建的对象称为一个组件. 例:Button button = new Butto

李晓菁201771010114《面向对象程序设计(java)》第十二周学习总结

一:理论部分 1.(1) 用户界面(User Interface)用户与计算机系统(各种程序)交互的接口 (2)图形用户界面(Graphical User Interface)以图形方式呈现的用户界面 2.AWT:Java 的抽象窗口工具箱( Abstract WindowToolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类. . AWT库处理用户界面元素的方法:把图形元素的创建和行为委托给本地GUI工具箱进行处理. . 应用AWT编写依赖于本地用户界

马凯军201771010116《面向对象与程序设计Java》第十二周学习总结

一.理论与知识学习部分 Java的抽象窗口工具箱(Abstract Window Toolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类. 大部分AWT组件都有其Swing的等价组件,Swing组件的名字一般是在AWT组件名前面添加一个字母"J". 通常把由Component类的子类或间接子类创建的对象称为一个组件. 组件类的常用API: boolean isVisible() 检查组件是否可见 void setVisible(boolean

张季跃 201771010139《面向对象程序设计(java)》第十二周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十二周学习总结 第二部分:实验部分 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的API: (3) 了解Java GUI中2D图形中字体与颜色的设置方法: (4) 了解Java GUI中2D图像的载入方法. 2.实验内容和步骤 实验1: 导入第9章示例程序,测试程序并进行代码注释. 2.实验内容和步骤 实验1: 导入第10章示例程序,测试

201771010101白玛次仁《面向对象程序设计(java)》第十二周实验总结

实验十二  图形程序设计 实验时间 2018-11-14 学习总结: 1.Java的抽象口工具箱( Abstract WindowToolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类. 2.AWT库处理用户界面元素的方法:把图形元素的创建和行为委托给本地GUI工具箱进行处理. 3.Swing用户界面库是非基于对等体的GUI工具箱.Swing具有更丰富并且更方便的用户界面元素集合.Swing对底层平台的依赖很少,因此与平台相关的bug很少.Swing会带