多态性

作者: 东经20度 | 来源:发表于2019-04-04 09:15 被阅读0次

多态性意味着有多重形式,在面向对象编程中,多态性往往表现为“一个接口,多个功能”。多态性可以分为静态和动态两种。在静态多态中,函数的响应实在编译时发生的,在动态多态性中,函数的响应是在运行时发生的。

1. 静态多态性

在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供两种技术来实现静态多态性。

1.1 函数重载

在同一范围内对相同函数有多个定义,参数或返回类型不同的函数声明叫作函数重载。

1.2 运算符重载

重载运算符是具有特殊名称的函数,通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。
语法:

访问修饰符 static 返回类型 operator运算符(参数列表){
  操作代码;
}

是否可重载运算符一览:

运算符 是否可重载
+,-,!,~,++,-- 一元运算符,可被重载
+,-,*,/,% 二元运算符,可被重载
==,!=,>,<,>=,<= 可被重载
&&,|| 逻辑运算符不能被直接重载
+=,-=,*=,/=,%= 赋值运算符不能被重载
=,.,?:,->,new,is,sizeof,typeof 不能被重载

例如:

class Triangle{
  private double length;
  private double height;
  public Triangle(){}
  public Triangle(double length,double height){
    this.length=length;
    this.height=height;
  }
  public void Show(){
    Console.WriteLine("area:{0}",(length*height)/2);
  }
  public static Triangle operator+(Triangle trA,Triangle trB){
    Triangle trC=new Triangle();
    trC.length=trA.length+trB.length;
    trC.heigth=trA.height+trB.height;
    return trC;
  }
}
class Program{
  static void Main(string[] args){
    Triangle trA=new Triangle(3,4);
    Triangle trB=new Triangle(6,8);
    Triangle trC=trA+trB;
    trC.Show();
    Console.ReadKey();
  }
}

2. 多态多态性

  1. 接口、抽象类
    当一个类继承抽象类或者实现接口的时候 就完成了动态多态性。
  2. 重写
    在 C# 中,重写需要使用关键字 virtual 以及 override。语法为:
//被重写的父类方法
访问修饰符 virtual 返回类型 方法名(){}
//子类重写
访问修饰符 override 返回类型 方法名(){}
  1. 隐藏基类的方法
    父类与子类有共同的方法,但子类不实用 override 重写而使用 new 来修饰。语法:
//父类被隐藏的方法 virtual可无
访问修饰符 virtual 返回类型 方法名(){}
//子类隐藏父类方法
new 访问修饰符 返回类型 方法名(){}

重写和隐藏的区别:
在进行对象下转型时,重写无法访问父类被重写的方法,而隐藏可以访问。例如:

FatherClass fc;
SonClass sc=new SonClass();
fc=sc;
fc.方法;
//若是重写则执行子类的方法
//若是隐藏则执行父类的方法

相关文章

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • C#魔帅-lesson_03-多态性

    多态性 多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。多态性可以是静态的或...

  • JAVA面向对象学习(多态性)

    多态性的理解和应用 1.1. 多态性的理解 多态性:在Java中,多态性是它的一大特性,可以理解成为是事物的多种形...

  • 多态

    面向对象特征之三:多态性 1、理解多态性:一个事物的多种形态 2、什么是多态性?对象的多态性:父类的引用指向子类的...

  • 第五章多态性

    第5章 多态性 一、编译时的多态性和运行时的多态性 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的...

  • 明明白白——虚函数,虚指针,虚表,虚继承

    多态性 多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性...

  • Java面向对象-多态性

    一、多态性 多态性的体现: 对象的多态性: 向上转型:程序会自动完成父类 父类对象 = 子类实例 向下转型:强...

  • 2020-02-20 Java 面向对象的多态性

    1.多态性的体现: 方法的重载和重写 对象的多态性 2.对象的多态性: 向上转型:程序会自动完成。...

  • 第十八课:多态性

    特点 对象的多态性: 分家导致的财产纠纷 方法 的多态性:双重事件

  • 面向对象-多态性

    /* 面向对象的特征三:多态性 1.多态性指的是什么?多态性,可以理解为一个事物的多种表型形态。 1)方法的重载与...

网友评论

      本文标题:多态性

      本文链接:https://www.haomeiwen.com/subject/eebzbqtx.html