白骑士的C#教学进阶篇 2.1 面向对象编程

21 篇文章 1 订阅

系列目录

上一篇:白骑士的C#教学基础篇 1.5 输入与输出

        面向对象编程(OOP)是C#的核心理念,它通过类和对象来组织代码,使程序更加模块化、可维护和可扩展。OOP的四大基本特性——封装、继承、多态和抽象——为代码的设计和实现提供了强大的支持。在本节中,将深入探讨这些概念,包括如何定义类与对象、实现继承和多态、以及使用抽象类和接口。掌握这些基本特性是构建复杂、功能丰富的应用程序的基础。

类与对象

        类是定义对象的蓝图或模板,它描述了一类对象的属性和行为。类中包含字段、属性、方法和事件。对象是类的实例,通过‘new‘关键字创建。

定义类

public class Person
{
    // 字段
    private string name;
    private int age;

    // 属性
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    // 方法
    public void Introduce()
    {
        Console.WriteLine("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}

创建对象

public class Program
{
    public static void Main(string[] args)
    {
        // 创建Person类的实例
        Person person = new Person();
        person.Name = "Alice";
        person.Age = 30;
        person.Introduce(); // 输出: Hello, my name is Alice and I am 30 years old.
    }
}

        在这个示例中,‘Person‘类定义了一个人的基本属性和行为,通过创建‘Person‘类的实例并调用其方法来实现功能。

继承与多态

继承

        继承是指一个类可以从另一个类继承属性和方法。基类(父类)中的成员可以在派生类(子类)中使用。继承通过‘:‘符号实现。

定义基类和派生类

public class Animal
{
    public string Name { get; set; }

    public void Speak()
    {
        Console.WriteLine(Name + " makes a sound.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine(Name + " barks.");
    }
}

使用继承

public class Program
{
    public static void Main(string[] args)
    {
        Dog dog = new Dog();
 
        dog.Name = "Buddy";
        dog.Speak(); // 输出: Buddy makes a sound.
        dog.Bark();  // 输出: Buddy barks.
    }
}

        在这个示例中,‘Dog‘类继承了‘Animal‘类的属性和方法,并添加了自己的方法‘Bark‘。

多态

        多态是指在不同情境下调用同一方法时表现出不同的行为。多态通过方法重写和接口实现。

方法重写

public class Animal
{
    public string Name { get; set; }

    public virtual void Speak()
    {
        Console.WriteLine(Name + " makes a sound.");
    }
}

public class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine(Name + " barks.");
    }
}

使用多态

public class Program
{
    public static void Main(string[] args)
    {
        Animal animal = new Dog();

        animal.Name = "Buddy";
        animal.Speak(); // 输出: Buddy barks.
    }
}

        在这个示例中,通过方法重写,实现了‘Dog‘类对‘Speak‘方法的多态行为。

抽象类与接口

抽象类

        抽象类是不能被实例化的类,只能被继承。抽象类中可以包含抽象方法,这些方法必须在派生类中实现。

定义抽象类

public abstract class Shape
{
    public abstract double GetArea();
}

public class Circle : Shape
{
    public double Radius { get; set; }

    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }
}

使用抽象类

public class Program
{
    public static void Main(string[] args)
    {
        Circle circle = new Circle();

        circle.Radius = 5;
        Console.WriteLine("Area of the circle: " + circle.GetArea()); // 输出: Area of the circle: 78.53981633974483
    }
}

        在这个示例中,‘Shape‘是一个抽象类,包含一个抽象方法‘GetArea‘,该方法在派生类‘Circle‘中实现。

接口

        接口定义了一组方法和属性,但不提供实现。类可以实现一个或多个接口。

定义接口

public interface IMovable
{
    void Move();
}

public class Car : IMovable
{
    public void Move()
    {
        Console.WriteLine("The car is moving.");
    }
}

使用接口

public class Program
{
    public static void Main(string[] args)
    {
        IMovable movable = new Car();
        movable.Move(); // 输出: The car is moving.
    }
}

        在这个示例中,‘IMovable‘接口定义了‘Move‘方法,‘Car‘类实现了该接口并提供了具体实现。

总结

        通过掌握面向对象编程的核心概念——类与对象、继承与多态、抽象类与接口——可以创建结构化、灵活且易于维护的C#程序。这些知识使程序能够重用和扩展已有代码,同时提高代码的可读性和管理性。在后续章节中,将进一步探讨C#的高级特性和编程技巧,帮助您更好地应用这些面向对象的原则。

下一篇:白骑士的C#教学进阶篇 2.2 集合与泛型​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白骑士所长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值