三、C#面向对象编程(继承与多态)
在C#中,面向对象编程(OOP)是编程的基本范式,它使用类和对象的概念来构建软件应用程序。面向对象编程的三个主要特性是封装、继承和多态。
-
封装:封装是将数据(属性)和操作数据的函数(方法)捆绑到一个独立的实体(对象)中。这样做可以隐藏对象的内部状态,并提供一种控制对象外部代码访问该状态的方式。
public class Car { public string Model { get; set; } public int EngineCapacity { get; set; } public void StartEngine() { Console.WriteLine("Engine started."); } }
-
继承:继承是子类自动获得父类所有非私有属性和方法的能力。子类可以添加或覆盖父类的成员。通过继承,可以创建更具体的类,从更一般的类中继承属性和方法。
public class Engine { public void Start() { Console.WriteLine("Engine started."); } } public class Car : Engine // Car类继承自Engine类 { public string Model { get; set; } public int EngineCapacity { get; set; } }
-
多态:多态意味着一个接口可以有多种实现方式,或者父类引用可以指向子类对象。多态允许程序在运行时确定对象的具体类型,并据此调用相应的方法。多态性是通过方法重写、接口实现和委托实现的。
interface IShape { void Draw(); } class Circle : IShape { public void Draw() { Console.WriteLine("Drawing Circle..."); } } class Rectangle : IShape { public void Draw() { Console.WriteLine("Drawing Rectangle..."); } } class Program { static void Main(string[] args) { IShape shape1 = new Circle(); // 引用类型为Circle的IShape对象 IShape shape2 = new Rectangle(); // 引用类型为Rectangle的IShape对象 shape1.Draw(); // 输出 "Drawing Circle..." shape2.Draw(); // 输出 "Drawing Rectangle..." } }
在上面的例子中,
IShape
接口定义了一个Draw
方法,Circle
和Rectangle
类都实现了这个接口。在Main
方法中,我们创建了Circle
和Rectangle
类的实例,并分别通过IShape
接口的引用进行调用。由于多态性,程序在运行时根据实际对象的类型来调用相应的方法。
除了接口,委托也是实现多态性的一种方式。委托是一种类型安全的函数指针,允许你指向具有相同签名的任何方法。
public delegate void MyDelegate(string message);
public class Program
{
public static void Main(string[] args)
{
MyDelegate del = new MyDelegate(ShowMessage);
del("Hello World"); // 输出 "Hello World"
del = new MyDelegate(ShowMessage2);
del("Hello C#"); // 输出 "Hello C#"
}
public static void ShowMessage(string message)
{
Console.WriteLine(message);
}
public static void ShowMessage2(string message)
{
Console.WriteLine($"{message.ToUpper()} C#");
}
}
在这个例子中,我们定义了一个名为MyDelegate
的委托,它接受一个字符串作为参数。Main
方法中创建了两个委托实例,一个指向ShowMessage
方法,另一个指向ShowMessage2
方法。当我们通过委托调用方法时,会根据实际指向的方法来执行相应的逻辑。
多态性是面向对象编程中非常强大的特性,它允许我们编写更灵活、可扩展的代码,并能够以更自然的方式表达现实世界中的概念。通过使用继承和接口,我们可以构建具有共同特性的类层次结构,并通过多态性在不同的类实例上执行相同的操作,而具体实现可以在运行时确定。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!