C# 面向对象编程的三大支柱:封装、继承与多态

打印 上一主题 下一主题

主题 644|帖子 644|积分 1936

面向对象编程(OOP)是一种广泛使用的编程范式,它通过封装、继承和多态这三大支柱来构建机动且可维护的代码布局。本文将详细介绍这三大支柱在C#语言中的应用,并通过示例代码展示它们的详细实现。
一、封装(Encapsulation)

封装是指将对象的属性(字段)和行为(方法)结合在一起,并对外部隐藏对象的详细实现细节,仅暴露须要的接口供外部使用。封装进步了代码的安全性和可维护性。
示例代码
  1. using System;

  2. namespace EncapsulationExample
  3. {
  4.     class Person
  5.     {
  6.         // 私有字段
  7.         private string name;
  8.         private int age;

  9.         // 公共属性,通过get和set访问器控制字段的访问
  10.         public string Name
  11.         {
  12.             get { return name; }
  13.             set { name = value; }
  14.         }

  15.         public int Age
  16.         {
  17.             get { return age; }
  18.             set
  19.             {
  20.                 // 添加逻辑校验,例如年龄应为非负数
  21.                 if (value >= 0)
  22.                     age = value;
  23.                 else
  24.                     throw new ArgumentException("Age must be non-negative.");
  25.             }
  26.         }

  27.         // 方法
  28.         public void DisplayInfo()
  29.         {
  30.             Console.WriteLine($"Name: {name}, Age: {age}");
  31.         }
  32.     }

  33.     class Program
  34.     {
  35.         static void Main(string[] args)
  36.         {
  37.             Person person = new Person();
  38.             person.Name = "Alice";
  39.             person.Age = 30;
  40.             person.DisplayInfo();

  41.             // 尝试设置非法年龄会抛出异常
  42.             try
  43.             {
  44.                 person.Age = -5;
  45.             }
  46.             catch (ArgumentException ex)
  47.             {
  48.                 Console.WriteLine(ex.Message);
  49.             }
  50.         }
  51.     }
  52. }
复制代码
二、继承(Inheritance)

继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的重用和扩展。子类可以新增或重写父类的方法,但必须遵守父类定义的接口契约。
示例代码
  1. using System;

  2. namespace InheritanceExample
  3. {
  4.     // 父类
  5.     class Animal
  6.     {
  7.         public void Eat()
  8.         {
  9.             Console.WriteLine("Eating...");
  10.         }
  11.     }

  12.     // 子类
  13.     class Dog : Animal
  14.     {
  15.         // 新增方法
  16.         public void Bark()
  17.         {
  18.             Console.WriteLine("Barking...");
  19.         }

  20.         // 重写父类方法
  21.         public new void Eat()
  22.         {
  23.             Console.WriteLine("Dog is eating specific food...");
  24.         }
  25.     }

  26.     class Program
  27.     {
  28.         static void Main(string[] args)
  29.         {
  30.             Dog dog = new Dog();
  31.             dog.Eat();  // 调用子类的方法
  32.             dog.Bark();
  33.         }
  34.     }
  35. }
复制代码
三、多态(Polymorphism)

多态是指允许使用对象的某个基类引用来指向其任何派生类的对象,并通过这个基类引用调用派生类中重写的方法。多态性使得代码更加机动和可扩展。
示例代码
  1. using System;

  2. namespace PolymorphismExample
  3. {
  4.     // 抽象父类
  5.     abstract class Shape
  6.     {
  7.         // 抽象方法
  8.         public abstract double GetArea();
  9.     }

  10.     // 子类:圆形
  11.     class Circle : Shape
  12.     {
  13.         public double Radius { get; set; }

  14.         public override double GetArea()
  15.         {
  16.             return Math.PI * Radius * Radius;
  17.         }
  18.     }

  19.     // 子类:矩形
  20.     class Rectangle : Shape
  21.     {
  22.         public double Width { get; set; }
  23.         public double Height { get; set; }

  24.         public override double GetArea()
  25.         {
  26.             return Width * Height;
  27.         }
  28.     }

  29.     class Program
  30.     {
  31.         static void Main(string[] args)
  32.         {
  33.             // 多态性:使用基类引用来指向派生类对象
  34.             Shape circle = new Circle { Radius = 5 };
  35.             Shape rectangle = new Rectangle { Width = 4, Height = 6 };

  36.             Console.WriteLine($"Circle Area: {circle.GetArea()}");
  37.             Console.WriteLine($"Rectangle Area: {rectangle.GetArea()}");
  38.         }
  39.     }
  40. }
复制代码
总结

封装、继承和多态是面向对象编程的三大基本支柱,它们在C#中得到了充分的支持。通过封装,我们可以保护对象的内部状态;通过继承,我们可以重用和扩显现有的代码;通过多态,我们可以编写更加机动和可扩展的代码。理解和掌握这三大支柱,对于编写高质量的C#程序至关重要。盼望本文的示例代码可以或许资助读者更好地理解和应用这些概念。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表