面向对象编程三大特点  封装 继承 多态。今天我把自己学习多态的过程进行总结

多态 就是 同一个方法在不同情况下,会表选不同的效果(多个形态)。在代码上表现就是 同一个父类对象 赋予不同的子类对象 就会发生不同的效果。其本质就是 里氏转换

1、子类可以赋值给父类    2、如果父类中装的是子类对象,则可以将这个父类转换为对应的子类对象

作用:我们可以将所有的子类都当做是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断改变。

父类 ss= new 子类();

注意  1、当1个父类变量指向了1个子类对象 只能通过这个父类变量调用父类的成员. 子类独有的成员无法调用.

多态有三种实现方法

--->虚方法

virtual override  //是普通的类,有意义的 可以创建对象

//如果子类重写了父类的虚方法. 那么通过父类变量来调用这个方法的时候 会调用子类的.

--->抽象类

abstract override   只能是抽象类,无意义的 不能创建对象

只声明方法,不去实现方法,让继承的类去实现(光说不做)

--->接口  Interface只定义方法,只定义规范,让实现这个接口的类,去实现里面的方法

多个类具有相同的行为但没有共同父类可以使用接口。

虚方法:很平常的类,只需要在需要重写的方法前面 添加 virtual ,就可以被子类重写,而virtual 本身所在的方法也是有意义,可以使用的。

例子:

class    Employee //父类
{
public virtual void DaKa()
{
Console.WriteLine("员工九点打卡");
}
}

class  Manager : Employee   //子类
{
public override void DaKa()
{
Console.WriteLine("经理11点打卡");
}
}

Employee emp = new Manager();

emp.DaKa();  // 经理11点打卡


抽象类:专门用来抽象出公共的方法和属性。进行共用的。所以他是无意义的,不能创建对象。只声明方法,不去实现方法,让继承的类去实现(光说不做),

抽象成员只能出现在抽象类中,抽象类中也可以有其他的普通成员。一个子类继承了一个抽象的父类,那么这个子类必须重写这个抽象父类中的所有抽象成员  所以当我们调用对象时    抽象类 ss= new 子类();     这个时候 我们所能调用的是父类的成员,但是子类重写的成员,就是子类重写后的

接口:接口是一种规范。也是一种能力。只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员。接口的功能要单一。也就是说,接口不能new(不能创建对象)。实现接口的子类必须实现该接口的全部成员。

一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。  class MyClass:A,IA{},因为类是单继承的。

例子:

class Driver : Person, IKouLan
{
public void KouLan()
{
Console.WriteLine("司机也可以扣篮");
}
} interface IKouLan //表示可以扣篮的一种能力
{
void KouLan();
} class NBAPlayer : Person
{
public void KouLan()
{
Console.WriteLine("NBA球员可以扣篮");
}
}
class Person
{
public void CHLSS()
{
Console.WriteLine("人类可以吃喝拉撒睡");
}
}

//实现多态
IKouLan kl = new Driver();//new Teacher();//new Student();
kl.KouLan();
Console.ReadKey();

经验:抽象类也可以继承接口,只要继承接口的都必要实现接口,所以抽象类也要实现接口。尽量不要出现这种情况让抽象类去实现接口,接口代表能力,子类有能力就实现接口,没能力就不去实现接口,如果都需要,那就直接写到父类中,不需要写到接口中让抽象类去实现。

 

C#多态学习总结的更多相关文章

  1. luogg_java学习_07_抽象类_接口_多态学习总结

    这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 抽象 一种专门用来做父类,被继承的. (模板) 格式: abs ...

  2. JAVA多态学习3

    这一节我们来学习抽象类 抽象类–深入讨论 抽象类是java中一个比較重要的类. 1.用abstract关键字来修饰一个类时.这个类就是抽象类. 2.用abstract关键字来修饰一个方法时,这种方法就 ...

  3. Java多态学习笔记

    面向对象三大特性:封装,继承和多态.其中,封装,继承都比较通俗易懂,唯有多态令我甚是头疼.经过仔细研究之后,终于搞懂了一点,特来做一个分享.独乐乐不如众乐乐. 何为多态?多态的本质是:一个程序中同名的 ...

  4. JAVA多态学习1

    多态–概念 所谓多态.就是指一个引用(类型)在不同情况下的多种状态. 也能够理解成:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 实现多态有两种方式:1.继承.2.接口 这一次我们先来演 ...

  5. c#中的多态学习总结

    c#的多台方法,大体上和c++的类似,但是有点区别的,我这里刚刚初学,因此把重点记录下. 多态是同一个行为具有多个不同表现形式或形态的能力. 多态性意味着有多重形式.在面向对象编程范式中,多态性往往表 ...

  6. JAVA多态学习2

    好啦,这里紧接着上次没说的向下转型,请读者结合上次讨论的向上转型的样例一起探讨(事实上本次代码也有加上,放心). 我们这里希望从向下转型会出现的两种基本情况进行探讨 package downcasti ...

  7. Java学习之多态

    多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = new Child(); ...

  8. Java学习之 多态 Polymorphism

    转自:http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一 ...

  9. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

随机推荐

  1. linux shell date的用法

    该随笔引用自https://www.cnblogs.com/alsodzy/p/8403870.html 在 linux shell 里面date命令的参数 %% 一个文字的 % %a 当前local ...

  2. 面向对象--OO--object-oriented

    如何把大象装冰箱? 面向过程:打开冰箱门---把大象装进去---关上冰箱门 面向对象: 1.大象:进入冰箱.离开冰箱 2.冰箱:开门.关门 3.人:检测1.检测2 面向对象三大特性:封装.继承.多态 ...

  3. pysftp-tools

    import pysftp import paramiko import os import unittest import json import warnings warnings.filterw ...

  4. .NET Core部署Windows服务

    创建 首先你要确保你已经安装了.NET Core 3.0或以上版本. 老版本的Windows服务请看 这篇文章 使用命令行创建:  dotnet new worker 使用Visual Studio创 ...

  5. IdentityHashCodeTest

    Java学习:identityHashCode和hashCode方法, System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode ...

  6. web开发中的一些不常见的概念

    1.惊群  [活跃]星际争霸小王子 就是当你在车站时,一堆拉客的人一拥而上,想你坐他的车,于是就惊群了.但你只能坐一个车,所以没拉到你的就悻悻而归,于是return false[活跃]星际争霸小王 2 ...

  7. wordpress 添加友情链接

    最近入了wordpress的坑,虽然还没深入,但是好歹弄了点东西了:) 一般网站都有友情链接这个东东吧,看网上说这个有个插件的,叫“Link Manager”,添加完了以后就能添加了,可是我今天去搜的 ...

  8. Zabbix监控工具介绍及软件监控、硬件监控及报警练习

     zabbix介绍 zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供 ...

  9. SpringCloud全家桶学习之断路器---Hystrix(五)

    目前我也在摸索着学习Spring Cloud,本节主要摸索的是服务熔断.服务降级.Hystrix服务监控. 一.Hystrix概述 (1)服务雪崩 服务雪崩:多个微服务之间调用的时候,假设微服务A调用 ...

  10. Message Queue的使用目的

    为什么要用Message Queue   摘录自博客:http://dataunion.org/9307.html?utm_source=tuicool&utm_medium=referral ...