一、定义
1.封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口(get与set方法或者构造函数),控制在程序中属性的读和修改的访问级别将抽象得到的数据和行为(或功能)相结合,形成一个整体。(1)隐藏实现:使用你的代码的用户无需知晓其内部工作原理。唯一需要知道的是如何实例化 和使用对象。总之,提供给用户使用方式,但是隐藏细节。
2.继承:对一个类的属性或方法进行扩展,继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
减弱了封装,继承意味着对其他类的强封装,但 是弱化了父类和其子类之间的封装。
3.多态:,多态从字面上理解就是很多形状。当对象收到消息后,该对象 必须定义一个方法来响应该消息。在继承体系结构中,所有的子类会继承其父类的 接口。然而,由于每个子类是单独的实体,每个子类需要对同一个消息有不同的响 应。父类方法的在不同子类的不同种实现形式。
二、代码具体实现
封装:
```csharp
public class Person {
private string name;
private int age;
public Person(string name, int age) {
this.name = name;
this.age = age;
}
public void SayHello() {
Console.WriteLine("Hello, my name is {0} and I'm {1} years old.", name, age);
}
}
```
在上面的代码中,我们定义了一个Person类,并将name和age字段设为私有。我们通过构造函数来初始化这些字段,同时提供了一个公共方法SayHello来输出人物的基本信息。这样做可以避免外部直接访问类的私有成员,从而实现了封装。
继承:
```csharp
public class Animal {
public virtual void Move() {
Console.WriteLine("The animal moves.");
}
}
public class Dog : Animal {
public override void Move() {
Console.WriteLine("The dog runs.");
}
}
```
在上面的代码中,我们定义了一个Animal类,并提供了一个虚方法Move。然后我们又定义了一个Dog类,并使用override关键字重写了父类Animal的Move方法。这样做可以使得Dog类继承Animal类的所有成员,同时还可以自定义一些额外的行为,从而实现了继承。
多态:
```csharp
public abstract class Shape {
public abstract double Area();
}
public class Rectangle : Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public override double Area() {
return width * height;
}
}
public class Circle : Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public override double Area() {
return Math.PI * radius * radius;
}
}
public class Client {
public static void Main() {
Shape[] shapes = new Shape[2];
shapes[0] = new Rectangle(10, 20);
shapes[1] = new Circle(5);
foreach (Shape shape in shapes) {
Console.WriteLine("Area of {0}: {1}", shape.GetType().Name, shape.Area());
}
}
}
```
在这个例子中,我们定义了一个抽象类Shape,并提供了一个抽象方法Area,用于计算形状的面积。然后我们又定义了两个具体的类Rectangle和Circle,并分别实现了Area方法。最后,在Client类中我们使用Shape数组来存储不同的形状对象,并通过循环调用每个对象的Area方法,输出不同形状的面积信息。这样做可以实现多态,即不同对象对同一方法做出不同的响应。