# 在c#中什么是封装，继承和多态，实现方式是什么？

By [依托答辩](https://paragraph.com/@0x880529ab1fbf2f4007646bc3b0745a53ef7b1888) · 2023-03-28

---

1.封装
----

`封装是一种面向对象编程的基本概念，他指的是将数据和行为绑定在一起并对其进行保护，不允许外部程序直接访问或修改其属性和方法。这通常通过访问修饰符来实现。`

`封装的目的是为了隐藏对象的内部实现细节，同时通过提供一个简单的接口来访问对象的功能，从而使代码更加可靠，灵活和利于维护。封装可以让代码更加模块化，降低了代码的耦合性，使得代码的复用性更高，并且能够更好地保护程序的安全性和稳定性。`

2.继承
----

继承是一种面向对象编程的概念，它允许派生类获取基类的属性和方法，在c#中继承通过使用关键字 ‘ ：’来实现，子类可以继承父类的所有公共和收保护的成员 例如：

    class Animal {
        public void Eat() {
            Console.WriteLine("Animal is eating");
        }
    }
    
    class Dog : Animal {
        public void Bark() {
            Console.WriteLine("Dog is barking");
        }
    }
    

这里，Dog类继承了Animal类，并且还定义了自己的方法Bark()。

3.多态
----

多态指的是同一个方法或操作可以被不同的对象调用，产生不同的结果。多态可以通过虚方法和抽象方法来实现，虚方法允许子类重写父类的方法，而抽象类则需要子类实现其中的抽象方法。例如

    abstract class Shape {
        public abstract int Area(); // 抽象方法
    }
    
    class Rectangle : Shape {
        private int length;
        private int width;
    
        public Rectangle(int l, int w) {
            length = l;
            width = w;
        }
    
        public override int Area() { // 重写父类方法
            return length * width;
        }
    }
    
    class Circle : Shape {
        private int radius;
    
        public Circle(int r) {
            radius = r;
        }
    
        public override int Area() { // 重写父类方法
            return (int)(Math.PI * radius * radius);
        }
    }
    

这里，Shape是一个抽象类，它有一个抽象方法Area()。Rectangle和Circle都继承了Shape，并且实现了自己的Area()方法，这就实现了多态性。

---

*Originally published on [依托答辩](https://paragraph.com/@0x880529ab1fbf2f4007646bc3b0745a53ef7b1888/c-2)*
