面向对象三大特征之多态

面向对象的三大特征:封装、继承、多态。今天重点来看一下“多态”。

封装

指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。将属性或方法进行封装,防止外部程序随机访问,加强代码的安全性。

继承

子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

子类继承父类,使用extends关键字。

子类可以访问父类那些属性和方法?

private 本类      
默认省略(default) 本类 同包    
protected 本类 同包 非同包子类  
public 本类 同包
非同包子类


其他任何包都可用

1 //类的继承格式
2
3 class 父类  {
4
5 }
6
7 class  子类  extends  父类{
8
9 }

多态

终于进入到今天的重点了!

多态是同一种事物,由于条件的不同,展示出不同的结果。

在程序中多态就是同一种引用类型,由于使用不同的对象实例,而执行不同地操作。

例如:猫吃鱼,狗啃骨头。不是多态;

在动物界,有的小动物吃鱼,有的小动物啃骨头。就是多态。

多态的优点:

1. 消除类型之间的耦合关系

2. 可替换性

3. 可扩充性

   4.  接口性

5.  灵活性

6. 简化性

 实现多态的条件:

① 子类继承父类;

② 子类重写父类方法;

③ 父类引用指向子类对象。保证了同一个父类引用类型,使用不同的子类对象实例,而执行不同的操作。

 1 /**
 2  * 乐器(Instrument)类包括:钢琴(Piano)类、小提琴(Violin)类;
 3  * 乐器类必须是抽象类,其中要有抽象方法(保证子类重写父类方法)
 4  * 各种乐器的弹奏( play )方法各不相同
 5  * 演奏家来演奏乐器
 6  */
 7
 8
 9 //乐器类
10 public abstract class Instrument {  //抽象类
11     public abstract void play();  //抽象方法,子类必须重写父类对象
12 }
13
14 //钢琴类
15 public class Piano extends Instrument{  //继承父类
16     public void play(){   //重写方法
17         System.out.println("弹奏钢琴");  //钢琴弹奏方法
18     }
19 }
20
21 //小提琴类
22 public class Violin extends Instrument{  //继承父类
23     public void play(){  //重写方法
24         System.out.println("演奏小提琴");  //小提琴弹奏方法
25     }
26 }
27
28 //演奏家类
29 public class Artist {
30     public void make(Instrument i){  //传入“乐器”参数,哪个乐器调用哪个方法
31         System.out.println("演奏家:"+name);
32         i.play();
33     }
34 }
35
36 //Test类
37 public class Test {
38     public static void main(String[] args) {
39         Artist a=new Artist("xxx");  //父类引用指向子类对象
40         //相当于Instrument i = new Piano() ;实例化一个子类对象,i存的是一个地址。
41         a.make(new Piano());  //传进的对象不同,可调用一样的方法,结果不同。以 Piano 对象调用“演奏家类”中的 make 方法。
42         a.make(new Violin());
43     }
44 }    

执行以上程序,输出结果为:

原文地址:https://www.cnblogs.com/yanglianwei/p/8732857.html

时间: 2024-10-06 06:58:49

面向对象三大特征之多态的相关文章

【华为云技术分享】Python 面向对象三大特征之多态

[摘要] 面向对象的三大特性多态相关知识. 多态 1.多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 1 import abc 2 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 3 @abc.abstractmethod 4 def talk(self): 5 pass 6 7 class People(Animal): #动物的形态之一:人 8 def talk(self): 9 print('say hello') 10 11

【原生js】js面向对象三大特征之多态笔记 (

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 </head> 8 <script> 9 /*多态的基本概念:一个引用类型(变量)在不同情况下的多种状态. 10 js本身是无态的,天生就支持多态.*/ 11 12 //M

面向对象三大特征之多态——Java笔记(七)

多态: 同一个实体同时具有多种形式 编译时的类型有声明该变量时使用的类型决定,运行时的类型有实际赋值给变量的对象决定 如果编译时类型和运行时类型不同,就出现多态 例: 1 class Preson{ 2 } 3 class Teacher extends Preson{ 4 } 5 6 public class Demo { 7 public static void main(String args[]){ 8 //这行代码就会产生多态 9 Preson p = new Teacher(): 1

c++面向对象三大特征封装、继承和多态知识总结

面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把父类型中的数据传承到子类中,子类除了传承了父类的数据之外,还可以对父类型进行扩展: 公开继承  public 保护继承  protected 私有继承  private 保护成员:在子类和本类中可以访问,其他不行: 1.公开继承:在公开继承下,父类型中的数据是公开的到子类型中权限是公开的:父类型中保

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

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

(一)Python入门-6面向对象编程:07面向对象三大特征(封装、继承、多态)-继承

一:面向对象三大特征介绍 Python是面向对象的语言,也支持面向对象编程的三大特性:继承.封装(隐藏).多态. 封装(隐藏) 隐藏对象的属性和实现细节,只对外提供必要的方法.相当于将“细节封装起来”,只 对外暴露“相关调用方法”. 通过前面学习的“私有属性.私有方法”的方式,实现“封装”.Python 追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现. 继承 继承可以让子类具有父类的特性,提高了代码的重用性. 从设计上是一种增量进化,原有父类设计不变的情况下,可以

PHP面向对象三大特征

<?php//PHP 面向对象三大特征 封装 继承 多态 <抽象> //封装 /** * @author bin * *//* class Person{ //encapsulate private $name; private $age; //这个就好比我们Java中的get set 想spring注入的 通过通过set方法 通过构造函数 一样 public function __set($columnName,$value){ $this->columnName = $valu

JavaSE(一)面向对象三大特征、五大原则

面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性.简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体.在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问.通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分. (2)继承(Inhe

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

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 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