多态

C++—多态与继承

房东的猫 提交于 2019-11-30 09:32:46
一、基本概念 1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是 类的派生 。原有的类称为 基类或父类 ,产生的新类称为 派生类或子类 。 2、派生类的声明: class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n { 派生类成员声明; }; 3、一个派生类可以同时有多个基类,这种情况称为 多重继承 ,派生类只有一个基类,称为 单继承 。直接派生,间接派生。 4、继承方式规定了如何访问基类继承的成员。继承方式有public, private, protected。如果不显示给出继承方式,默认为private继承。继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。 5、 派生类继承基类中除 构造和析构 函数以外的所有成员 。 6、派生类生成: 吸收基类成员(除构造析构函数以外的所有成员); 改造基类成员(根据继承方式调整基类成员的访问,函数在子类中的覆盖,以及虚函数在子类中的覆盖); 添加新的成员; 7、公有继承 当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员。派生类的其他成员可以直接访问它们。 无论派生类的成员还是派生类的对象都无法访问基类的私有成员 。 8、私有继承

Java面向对象编程

半世苍凉 提交于 2019-11-30 09:29:32
Java 类及类的成员 属性、方法、构造器、代码块、内部类 面向对象的三大特征 封装、继承、多态、(抽象性) 其他关键字:this,super,final,static,abstract,interface,package,import 面向过程(POP)【Procedure Oridented Programming】与面向对象(OOP)【Object Oriented Programming】: 1.二者都是一种思想,面向对象是相对于面向过程而言的。 面向过程,强调的是功能行为,以函数为最小单位。考虑怎么做。 面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 2.面向对象更加强调运用人类在日常思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。 面向对象的三大特征: 1.封装 2.继承 3.多态 Java 语言的基本元素: 类和对象 类:是对一类事物的描述,是抽象的、概念上的定义 对象:是实际存在的该类事物的每个个体,也称为实例。 面向对象程序设计的重点:类的设计(设计类:就是设计类的成员(成员变量(属性),成员方法(函数/方法)))。 对象内存解析: 栈:地址,局部变量 堆:属性,方法,对象。 匿名对象。 方法的重载: 概念: 在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。 特点:

C#中的虚函数virtual

≯℡__Kan透↙ 提交于 2019-11-30 07:55:02
简单介绍虚函数virtual 在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员函数称为虚函数。 虚函数的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离。 C#作为完全面向对象语言,所有函数并不默认为virtual,但可以在基类中声明关键字virtual,就可以在其派生类中通过关键字override重写该函数。重写后的virtual函数依旧是virtual函数。由于virtual只对类中的实例函数成员有意义,所以成员字段和静态函数都不能声明为virtual,也不能与override和abstract一起用。 虚函数与一般函数的区别 一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中声明时定义的类叫声明类,执行时实例化的类叫实例类。 使用虚函数virtual 1、当调用一个对象的函数时,系统会直接去检查这个对象声明定义的类,即声明类,看所调用的函数是否为虚函数。 2、如果不是虚函数,那么它就直接执行该函数。而如果有virtual关键字,也就是一个虚函数,那么这个时候它就不会立刻执行该函数了,而是转去检查对象的实例类。 3、在这个实例类里

Java总论及三大特性理解

故事扮演 提交于 2019-11-30 07:34:41
1、对象(object) 万物皆为对象(根类Object类)。 程序是对象的集合(面向对象程序设计语言OOP)。 每个对象都有自己的由其他对象所构成的存储(对象有成员属性)。 每个对象都拥有其类型(每个对象都是某个类class的一个实例instance) 。 某一特定类型的所有对象都可以接收同样的信息(继承)。 2、类型(type) 类描述具有相同特性(数据元素)和行为(功能)的对象集合。是面向对象设计除了基本数据类型外的,一种通用的数据类型。 3、对象作为“服务提供者” 提高对象的内聚性,将对象的设计简化,并凸显其提高的服务价值。 高质量代码的基本要求是:可复用、高内聚、低耦合。 4、封装(信息隐藏) 指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。 一句话总结: 所谓封装,就是把数据和方法保护在类的内部,只允许可信的类或对象操作,对不可信的进行信息隐藏。 好处: (1)实现了专业的分工。 将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用

Objective-C文字总结

血红的双手。 提交于 2019-11-30 07:34:28
多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 Oc中的多态:不同对象对同一消息的不同响应.子类可以重写父类的方法 多态就是允许方法重名 参数或返回值可以是父类型传入或返回。 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。 举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。 使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族

Java 多态

假如想象 提交于 2019-11-30 05:04:26
多态的理解 多态分为静多态与动多态: 1)静多态:也称为编译时的多态,就是常说的方法重载,是在编译时刻就已经确定号具体调用方法的情况,是静态绑定的。 2)动多态:动多态方法调用需要有方法调用所作用的对象,在调用时才确定具体的调用方法,是动态绑定的。 换句话说多态就是同一个行为在不同情况下的不同表现形式,多态发生时有三个必要条件:(1)继承(2)方法重写(3)父类引用派生类的对象 多态的举例实现 1)写一个父类Food: class Food { public void eat ( ) { System . out . println ( "在吃饭" ) ; } } 2)写一个子类TeaEgg: class TeaEgg extends Food { @Override public void eat ( ) { System . out . println ( "在吃茶叶蛋" ) ; ; } } 3)测试类: public class Test { public static void main ( String [ ] args ) { Food food = new TeaEgg ( ) ; food . eat ( ) ; } } 输出结果为: 在吃茶叶蛋 这一个简单的多态举例,体现了多态实现的三个必要条件: (1)TeaEgg类继承了Food类; (2

Java中的多态应用

非 Y 不嫁゛ 提交于 2019-11-30 04:24:12
1 class Test { 2 public static void main(String[] args) { 3 System.out.println(new B().getValue());      //1、执行B的构造方法       //14、执行父类A的getValue得到17       //18、输出返回值17 4 } 5 static class A { 6 protected int value; 7 public A (int v) { 8 setValue(v);         //3、调用子类B重写的setValue 9 } 10 public void setValue(int value) { 11 this.value= value;         //5、value=10          //13、valve=16 12 } 13 public int getValue() { 14 try { 15 value ++;           //6、value=11            //15、value=17 16 return value;           //10、执行finally前暂存value的值11,返回11           //18、执行finally前暂存的值17,返回17 17 } finally { 18

面向对象——三大特性

时光毁灭记忆、已成空白 提交于 2019-11-30 04:23:02
封装 定义 隐藏内部细节,提供公共的访问方法,便于调用。提高程序可展性、维护性。实现高内聚,低耦合 语法 私有化属性,提供公共的 get/set 方法 体现 属性、方法、构造器、内部类 class 的权限修饰只可以用 public 和 default( 缺省 ) 。 核心是访问权限 访问权限 本类 同包 子类 其他 private √ 缺省 √ √ protected √ √ √ public √ √ √ √ 好处 提高程序可展性、维护性。实现高内聚,低耦合 继承 定义 继承 多个类有相同的属性和方法时,将这些相同的属性和方法提取到一个类中,让多个类和这个类产生的一种关系 子类、超类、基类 此处的多个类称为子类,单独的这个类称为父类(基类或超类)。可以理解为 : “子类 is a 父类” 语法 class Subclass extends Superclass{ // 代码 } 好处 1 、 继承的出现提高了代码的复用性。 2 、 继承的出现让类与类之间产生了关系,提供了多态的前提。 3 、 不要仅为了获取其他类中某个功能而去继承 , 要考虑类之间是否有分类学关联 子类可以继承父类的内容 所有成员,不包括构造器 继承特性 1 、 子类继承了父类,就继承了父类的方法和属性。 2 、 在子类中,自动拥有父类中定义的方法和属性,也可以创建新的数据和方法。 3 、 在 Java 中

java第八节课

六月ゝ 毕业季﹏ 提交于 2019-11-30 04:14:27
#java 第八节课笔记 1.面向对象 特点:封装,继承,多态。 封装:就是将对象的属性和行为封装起来不让对象知道具体的实现细节。 继承:就是类与类之间可已通过继承在不用重新编写原有类的情况下去进行扩展。 多态:就是当一个类继承了另一个类后,相同引用类型的变量调用同一个方法所呈现的不同的行为特性。 2.类和对象的关系 类:类是对象的抽象,用来描述一组对象的共同特征和行为。 对象:用来表示现实中的一切都是对象。 来源: CSDN 作者: weixin_45807635 链接: https://blog.csdn.net/weixin_45807635/article/details/103228818

java多态实现

↘锁芯ラ 提交于 2019-11-30 04:13:44
Java的三大特点为封装、继承多态,而多态分为两种: 1.编译期多态(静多态,静态绑定) -> 函数重载 特点: 在一个作用域类 函数名相同,参数列表不同 2.运行期多态(动多态,动态绑定) -> 函数重写 发生运行期多态的条件: 1.继承 2.方法重写 3.向上造型(基类的引用 引用的是派生类的对象) 来源: CSDN 作者: Clear丶 链接: https://blog.csdn.net/qq_41937228/article/details/103245732