zhcn 编程语言 Golang Go 文件处理 非公開: C# 多态性

C# 多态性

多态性与封装和继承被认为是面向对象编程的三个主要特征。多态是一个希腊词,意思是“多种形式”,C#中的多态有两种类型:

  • 编译时多态性:编译时多态性是通过 C# 中的方法重载和运算符重载(也称为静态或早期绑定)来实现的。
  • 运行时多态性:通过方法重载实现运行时多态性。也称为动态绑定或后期绑定。

1. 编译时多态性

在编译期间将函数链接到对象的机制称为早期绑定,也称为静态绑定。 C#提供了两种实现编译时多态性的技术:函数重载和运算符重载。这里主要讨论函数重载,稍后讨论运算符重载。

函数重载

您可以在同一范围内定义多个具有相同名称的函数,但这些函数必须彼此不同,例如具有不同数量的参数或不同类型的参数,但返回类型不同除外

【范例】定义一个名为 print 的函数,用于打印各种类型的数据。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        void print(int i){
            Console.WriteLine("int 型のデータを出力します:{0}", i);
        }
        void print(double d){
            Console.WriteLine("double 型のデータを出力します:{0}", d);
        }
        void print(string s){
            Console.WriteLine("string 型のデータを出力します:{0}", s);
        }
        static void Main(string[] args) 
        {
            Demo p = new Demo();
            p.print(123);
            p.print("IT基礎");
            p.print(3.1415926);
        }
    }
} 

操作的结果将是:

int 型のデータを出力します: 123
string 型のデータを出力します: IT基礎
double 型のデータを出力します: 3.1415926

2.运行时多态性

在 C# 中,您可以使用abstract关键字创建用于实现部分接口的抽象类。抽象类还包含派生类可以实现的抽象方法。

以下是有关抽象类的一些规则:

  • 您无法创建抽象类的实例。
  • 抽象方法不能在抽象类之外声明。
  • 在类定义中使用 seal 关键字可以将其声明为密封类,但不能在抽象类中声明密封类,因为密封类不能被继承。

[示例] 下面的程序显示了一个抽象类。

 using System;

namespace it-kiso.com
{
    abstract class Shape{
        public abstract int area();
    }
    class Rectangle : Shape{
        private int width, height;
        public Rectangle(int w, int h){
            width = w;
            height = h;
        }
        public override int area(){
            return (width * height);
        }
    }
    class Demo
    {
        static void Main(string[] args) 
        {
            Rectangle r = new Rectangle(12,15);
            double a = r.area();
            Console.WriteLine("長方形の面積は: {0}",a);
            Console.ReadKey();
        }
    }
} 

操作的结果将是:

長方形の面積は: 180

浅显易懂的《C#多态》讲解!您必须观看的最佳 2 个视频

【C#】C#解説 part9 ポリモーフィズムについて 【Voiceroid】【プログラミング】
https://www.youtube.com/watch?v=1x2iNyTXflc&pp=ygUiIEMjIOODneODquODouODvOODleOCo-OCuuODoCZobD1KQQ%3D%3D
ポリモフィズムとは何か、使い方やメリットをコードで解説【Java入門講座】4-7 抽象クラスとポリモーフィズム
https://www.youtube.com/watch?v=tfrmaMGJtic&pp=ygUiIEMjIOODneODquODouODvOODleOCo-OCuuODoCZobD1KQQ%3D%3D
多态性与封装和继承被认为是面向对象编程的三个主要特征。多态是一个希腊词,意思是“多种形式”,C#中的多态有两种类型:

  • 编译时多态性:编译时多态性是通过 C# 中的方法重载和运算符重载(也称为静态或早期绑定)来实现的。
  • 运行时多态性:通过方法重载实现运行时多态性。也称为动态绑定或后期绑定。

1. 编译时多态性

在编译期间将函数链接到对象的机制称为早期绑定,也称为静态绑定。 C#提供了两种实现编译时多态性的技术:函数重载和运算符重载。这里主要讨论函数重载,稍后讨论运算符重载。

函数重载

您可以在同一范围内定义多个具有相同名称的函数,但这些函数必须彼此不同,例如具有不同数量的参数或不同类型的参数,但返回类型不同除外

【范例】定义一个名为 print 的函数,用于打印各种类型的数据。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        void print(int i){
            Console.WriteLine("int 型のデータを出力します:{0}", i);
        }
        void print(double d){
            Console.WriteLine("double 型のデータを出力します:{0}", d);
        }
        void print(string s){
            Console.WriteLine("string 型のデータを出力します:{0}", s);
        }
        static void Main(string[] args) 
        {
            Demo p = new Demo();
            p.print(123);
            p.print("IT基礎");
            p.print(3.1415926);
        }
    }
} 

操作的结果将是:

int 型のデータを出力します: 123
string 型のデータを出力します: IT基礎
double 型のデータを出力します: 3.1415926

2.运行时多态性

在 C# 中,您可以使用abstract关键字创建用于实现部分接口的抽象类。抽象类还包含派生类可以实现的抽象方法。

以下是有关抽象类的一些规则:

  • 您无法创建抽象类的实例。
  • 抽象方法不能在抽象类之外声明。
  • 在类定义中使用 seal 关键字可以将其声明为密封类,但不能在抽象类中声明密封类,因为密封类不能被继承。

[示例] 下面的程序显示了一个抽象类。

 using System;

namespace it-kiso.com
{
    abstract class Shape{
        public abstract int area();
    }
    class Rectangle : Shape{
        private int width, height;
        public Rectangle(int w, int h){
            width = w;
            height = h;
        }
        public override int area(){
            return (width * height);
        }
    }
    class Demo
    {
        static void Main(string[] args) 
        {
            Rectangle r = new Rectangle(12,15);
            double a = r.area();
            Console.WriteLine("長方形の面積は: {0}",a);
            Console.ReadKey();
        }
    }
} 

操作的结果将是:

長方形の面積は: 180

浅显易懂的《C#多态》讲解!您必须观看的最佳 2 个视频

【C#】C#解説 part9 ポリモーフィズムについて 【Voiceroid】【プログラミング】
https://www.youtube.com/watch?v=1x2iNyTXflc&pp=ygUiIEMjIOODneODquODouODvOODleOCo-OCuuODoCZobD1KQQ%3D%3D
ポリモフィズムとは何か、使い方やメリットをコードで解説【Java入門講座】4-7 抽象クラスとポリモーフィズム
https://www.youtube.com/watch?v=tfrmaMGJtic&pp=ygUiIEMjIOODneODquODouODvOODleOCo-OCuuODoCZobD1KQQ%3D%3D