多态

C#面向对象-多态

百般思念 提交于 2019-12-06 15:22:39
面向对象的三大特性(封装,继承,多态)大多少人都应该知道。前两个的话比较容易理解。本文主要说一下面向对象中的多态。 什么是多态? 不同的对象对同一操作,产生不同的执行结果。这就是多态。那么多态又包含了:重载,重写,虚方法,抽象方法。 1,重载 什么叫重载? 在同一个作用域的两个或多个方法函数名相同,参数列表不同的方法叫做重载。重载有三个特点: 1.1:方法名必须相同。 1.2:参数列表必须不同。 1.3:返回值类型可以不相同。 列如: 1 public void Animal() 2 { 3 Console.WriteLine("睡觉"); 4 } 5 public void Animal(int time) 6 { 7 Console.WriteLine("{0}点睡觉", time); 8 } 2,重写 什么是重写?子类中为满足自己的需求需要来重复定义基类中的某个方法的不同实现。重写需要使用override关键词。需要重写基类中的方法必须是虚方法或抽象方法。重写的特点: 2.1:相同的方法名。 2.2:相同的参数列表。 2.3:相同的返回值。 3,虚方法 什么是虚方法? 基类中定义的允许在子类中重写的方法叫虚方法。使用virtual关键字定义。子类可以不重写虚方法。列如: 1 class Animal 2 { 3 public virtual void EatFood() 4

快速上手Gobject

百般思念 提交于 2019-12-06 14:54:11
What is G-object? — 很多人被灌输了这样一种概念:要写面向对象程序,那么就需要学习一种面向对象编程语言,例如C++、Java、C#等等,而C语言是用来编写结构化程序的。 — 事实上,面向对象只是一种编程思想,不是一种编程语言。换句话说,面向对象是一种游戏规则,它不是游戏。 — Gobject,亦称Glib对象系统,是一个程序库,它可以帮助我们使用C语言编写面向对象程序;它提供了一个通用的动态类型系统(GType)、一个基本类型的实现集(如整型、枚举等)、一个基本对象类型-Gobject、一个信号系统以及一个可扩展的参数/变量体系。 Why Bother to use Gobject ? — GObject告诉我们,使用C语言编写程序时,可以运用面向对象这种编程思想。 — Gobject系统提供了一个灵活的、可扩展的、并且容易映射到其他语言的面向对象的C语言框架。 — GObject的动态类型系统允许程序在运行时进行类型注册,它的最主要目的有两个: 1)使用面向对象的设计方法来编程。GObject仅依赖于 GLib 和 libc ,通过它可使用纯C语言设计一整套面向对象的软件模块。 2)多语言交互。在为已经使用 GObject框架写好的函数库建立多语言连结时,可以很容易对应到许多语言,包括C++、Java、Ruby、Python和.NET/Mono等

面向过程编程&面向对象编程

淺唱寂寞╮ 提交于 2019-12-06 14:36:00
面向过程编程 Procedure Oriented Programming C语言是面向过程编程的,面向过程编程主要使用顺序、条件选择、循环三种基本结构来编写程序。 顺序:按照时间轴顺序完成每个处理; 条件选择:根据条件的成立与否执行不同的条件分支; 循环:根据一定的条件反复执行同样的代码; 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 例如:洗衣机的洗衣功能:放水、洗涤、脱水、打干,按照一定的顺序执行功能:放水->洗涤->脱水->放水->洗涤->脱水->打干。 在早期计算机配置低、内存小为了节省内存空间,大都采用面向过程编程(以时间换空间)。 面向对象编程 Object Oriented Programming 面向对象编程语言:Objective-C、C++、Java 面向对象是一种编程方式,满足面向对象编程的语言,一般会提供类、封装、继承、多态等语法和概念来辅助我们进行面向对象编程。 所谓的面向对象就是将我们的程序模块化、对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法封装到一个类里面,然后创建实例对象,以对象作为程序的基本模块来进行软件的分析、设计和开发的一种思考方法。 面向对象的三大特征:继承、封装、多态 1. 继承 继承:A类继承B类,我们通常称A类为B类的子类,被继承的B类为A类的父类

Unity之多态

十年热恋 提交于 2019-12-06 14:33:09
本文链接:https://blog.csdn.net/u010718707/article/details/41967149 1.方法隐藏: 如果子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法 2.virtual:用在父类中,表示方法可以重写 override:用在子类中,重写父类的方法 例子: class Father{ public virtual void Print{ Console.WriteLine("父类的Print()"); } } class Son:Father{ public override void Print(){ Console.WriteLine("父类的Print()"); } } 注:virtual关键字和override关键字是成对出现的,否则是语法错误。 3.父类的引用指向子类的实例 class Son:Father { static void Main(string[] args) { Father s = new Son();//相当于把子类的值赋给了父类 (子类自动转换为父类) 父类 子类 s.Print(); Console.ReadLine(); } } 很好的学习资源哦http://www.gopedu.com/course/explore/U3D 4.多态:(不同对象调用相同的方法

[转帖]Java中重写和重载与多态的关系

我怕爱的太早我们不能终老 提交于 2019-12-06 13:45:30
Java中重写和重载与多态的关系 2019-09-05 00:57:41 留下一天今天 阅读数 67 收藏 更多 分类专栏: java进阶之路 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_34383019/article/details/100550142 重写(Override) 重写指的是子类对父类可允许访问的方法进行重新编写,两者有相同的名称,相同参数,相同返回值,但是内容却不相同,子类的新方法将覆盖父类中原有的方法。 重载(Overload) 重载是在同一个类中,方法名称相同,参数不同。这样同名不同参的方法被称为重载。 重载VS重写 重写规则: 1、父类成员发放只能被它的子类重写 2、子类方法的访问修饰符一定要大于父类的访问修饰符(public>protected>default>private)。 3、子类和父类在同一包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 4、子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非final 方法。 5、声明为 final 的方法不能被重写。 6、声明为 static 的方法不能被重写,但是能够被再次声明。 7、子类方法的参数列表

java编程思想(六)总结

白昼怎懂夜的黑 提交于 2019-12-06 13:21:29
第七章 多态 7.1 多态与封装 多态是分离 “做什么”和“怎么做”,即接口与实现分离,消除类型之间的耦合性 封装是合并特征和行为来创建新的数据类型 7.2 向上转型和向下转型 向上转型即导出类实例转化为基类实例,由于只能调用与基类公共的方法,可能会缩小 “接口”。 向下转型即基类实例转化为导出类实例,由于 java 采用后期绑定策略,因此只有在运行阶段才知道是否能正确转化,因此存在风险。 7.3 转机 前期绑定:由编译器和连接程序实现。 后期绑定:运行时根据对象类型进行绑定。 Java除了static和final方法(private)之外,其他方法均属于后期绑定。 Private方法默认是final,对导出类是屏蔽的,因此不能被覆盖 7.4 抽象类和抽象方法 抽象类一般表示所有导出类的共同部分,抽象类不存在实例对象 7.5 构造器的调用顺序 1.基类构造器 2.组合(属性初始化) 3.自身构造 清理的调用顺序相反 7.6用继承进行设计 除非为了表示父子类关系,即 xx 是一种 xx 或者向上转型,一般选择组合 用继承表达行为间的差异,用组合表达状态的变化 来源: CSDN 作者: MrGeroge 链接: https://blog.csdn.net/MrGeroge/article/details/52625925

每日一题:​面向对象的特征有哪些?

浪尽此生 提交于 2019-12-06 13:09:49
问题:面向对象的特征有哪些? 答:封装,继承,多态和抽象。 1. 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 3 种修饰符:public,private 和 protected。每一 种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展 禁止对象之间的不良交互,提高模块化 2. 继承 继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 3. 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 4. 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java 支持创建只暴露接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。 来源: https://www.cnblogs.com/tong-yuan/p/11986518.html

每日一题:​面向对象的特征有哪些?

独自空忆成欢 提交于 2019-12-06 13:09:24
问题:面向对象的特征有哪些? 答:封装,继承,多态和抽象。 1. 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 3 种修饰符:public,private 和 protected。每一 种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展 禁止对象之间的不良交互,提高模块化 2. 继承 继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 3. 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 4. 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java 支持创建只暴露接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。 来源: https://my.oschina.net/u/4108008/blog/3137600

Javase—多态习题

你离开我真会死。 提交于 2019-12-06 13:00:04
/** * 【练习题】1.多态练习 1.定义一个Animal父类,方法有eat(); 2.定义三个子类; Cat,Dog,Eagle; 每个子类增加新的方法,并重写eat(); 3.利用多态性 定义一个Animal类型的变量a,并将不同子类的实例赋给a; 调用eat();观察结果后,并理解多态 4.思考,如果a的引用指向一个Cat,如何调用Cat的新增方法; */ package com.Oracle.oop4; public class Animal { public void eat() { System.out.println("吃吃"); } } package com.Oracle.oop4; public class Cat extends Animal{ @Override public void eat() { System.out.println("咦,这是谁掉落的小鱼干(= =+)"); } public void scorn() { System.out.println("蔑视尔等凡人"); } } package com.Oracle.oop4; public class Dog extends Animal { public void eat() { System.out.println("汪汪汪,我什么都吃哒~"); } public void

JavaSE的复习内容总结

巧了我就是萌 提交于 2019-12-06 12:58:24
一 java基础1 1.数据类型:基本数据类型和复合(引用)数据类型 它们分别占用的空间大小和默认值是多少? 2.类型转换 低优先级->高优先级转换 自动转 高优先级的转低优先级的 强转 3.运算符 算术运算符 关系运算符 赋值运算符 布尔逻辑运算符 三目运算符 位运算符 6&4=? 位运算符需要转换成二进制进行运算 4.输入的方式 Scanner BufferedReader 通过System.in.read(buf); 二.java基础2 1.流程控制语句 选择条件语句:if else语句 switch语句 循环结构语句:do while语句 while语句 for语句 跳转语句:break continue 2.数组:堆内存中一块连续的存储空间 数组的初始化?定义格式? 二维数组:里面的每一个元素都是一个一维数组 三.java基础3 方法的定义?方法的作用 有返回类型有参数 无返回类型无参数 有返回类型无参数 无返回类型有参数 方法的两个特性:重载和重写 重载:同一个类中,只看同名方法的参数列表 重写:子类继承父类,要求方法要一模一样 String类 StringBuilder:线程不安全的可变字符串 StringBuffer:线程安全的可变字符串 可变参数 简易for循环for each循环 四.面向对象1 类:对现实世界中具体事物的抽象描述 对象:具体事物实实存在的个体