多态:

多态是面向对象的三大特征(封装、继承、多态)之一。

什么是多态?

一个对象表现出多种状态。

多态的实现方法:

1、虚方法;

2、抽象方法;

3、接口。

PS:New 关键词可以隐藏父类的方法。

实现多态的三中途径:

1、虚方法:在父类方法中标记virtual,virtual 放在 访问修饰符后面,子方法加 override,override放在访问修饰符后面。

2、抽象类(不能被实例化):要抽象的类的访问修饰符后面和关键词class前加“abstract”,类里面的方法的访问修饰符后面,方法返回类型前面加“abstract”

抽象类的使用语法举例:

Public abstract class Person

{

Public abstract void Eat();

Public abstract void Speak();

}

抽象类的特点:

如果一个子类继承了一个抽象类的父类,那么这个子类必须实现这个父类中的所有抽象成员,除非这个子类也是抽象的。

3、接口

关键词:interface

接口中不能有字段,只有方法,而且方法不能有方法体。并且成员没有访问修饰符,但是默认的访问权限是public。(ps:类成员前如果不加访问修饰符,默认的是private)

接口的理解:接口侧重于一种能力。

接口的注意点:

如果一个类继承一个接口,那么必须实现这个接口所有成员。一个接口尽量只写一个方法,避免感染。

接口能继承一个或者多个接口。但是接口不能继承一个或者多个类!类能继承一个或者多个接口(准确的说是类能实现一个或者多个接口)

显示实现接口:void 接口名.方法名(默认的访问修饰符是private)

显示实现接口的目的 就是为了解决重名问题。

如果一个类继承了一个父类和一个接口或者多个接口,父类需要放在第一位。

接口的调用:

接口名 接口对象=new 子类对象();

接口对象.方法();

思考问题:

什么时候用虚方法和抽象类?

1、当父类有必须实现并且必须要实例化的时候,用虚方法!

2、当父类不需要方法实现,不需要实例化的时候,就用抽象类。

什么时候使用接口?

1、需要多次继承

2、当某些类具有一种或者多种相同的功能,但是却不能把这些类提取出一个父类,这时候把这些功能写成一个接口。

(除非注明,文章均为原创,欢迎转载,转载时请注明出处链接:智波生活 C#菜鸟笔记

 

 

C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一的更多相关文章

  1. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  2. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

  3. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  4. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  5. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  6. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  7. C++三大特性 封装 继承 多态

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  8. php面向对象的三大特征 封装,继承,多态

    对象的主要三个特性 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型. 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为 ...

  9. 面向对象的三大特征——封装、继承、多态(&常用关键字)

    一.封装 Encapsulation 在面向对象程式设计方法中,封装是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装的概念(针对服务器开发,保护内部,确保服务器不出现问题) 将类的 ...

随机推荐

  1. hadoop面试题答案

    Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储.a)NameNode  b)Jobtracker  c)Datanode d)secondary ...

  2. ffmpeg 的tutorial

    可能是新的: https://github.com/chelyaev/ffmpeg-tutorial https://github.com/chelyaev/ffmpeg-tutorial.git 老 ...

  3. 【数据结构】非常有用的hash表

        这篇博客的目的是让尚未学会hash表的朋友们对hash表有一个直观的理解,并且能根据本文定义出属于自己的第一个hash表,但算不上研究文,没有深究概念和成功案例.         什么是has ...

  4. PowerDesigner 15 概述

    PowerDesigner 15 概述 数据结构数据库powerbuildersybasemicrosoftuml   目录(?)[+]   一. PowerDesigner 介绍 PowerDesi ...

  5. cdoj 92 Journey tarjan/lca 树上点对距离

    Journey Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/92 Descri ...

  6. windows环境下搭建ffmpeg开发环境

           ffmpeg是一个开源.跨平台的程序库,能够使用在windows.linux等平台下,本文将简单解说windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows ...

  7. CircleProgressBar

    http://www.eoeandroid.com/thread-333984-1-1.html CircleProgressBar.rar

  8. 【BZOJ2318】【spoj4060】game with probability Problem 概率DP

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  9. requestCode 和 resultCode .

    OK,代码如上,可能这个时候还会有点疑问,关于参数的疑问.直接看android sdk 帮助说得更清楚.我发现网上有些文章还有吧 requestCode 和 resultCode 混淆说明错的. st ...

  10. 在javascript中关于submit和button提交表单区别

    submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. ...