C# 继承 多态

继承:
继承就是从父类中获取一些公开的成员,如方法和属性。C#中只允许继承一个父类,但允许继承多个接口。如果子类继承接口,则必须实现接口中定义的所有公开成员。
公开成员是指在父类中定义为public的成员(public的作用域可在子类中生效,而private作用域则不可)
子类继承父类:
子类拥有父类非Private的属性和功能;
子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
子类还可以以自己的方式实现父类的功能(方法重写)。
父类 某个类继承自某个类
子类 派生类 超类
代码例子如下:

//父类
class ren
   {
     private sting _name;
     prviate string _sex;
     private DateTime _birthday;
   }
 //子类 
 class xuesheng : ren
   {
   }

然后在xuesheng中就会获得ren 的属性。

多态:
多态是指类可以有多种形态,通过修改可以形成多个实现方法。子类从父类继承时它会获得父类的所有方法、字段、属性、事件。多态表示不同的对象可以执行相同的操作,但要通过它们自己的实现代码来执行。
若要改变父类的数据和行为,两种方式:可创建新的成员替换父级成员,或者可以重写虚拟的父级成员。
类的多种形态
父类存在虚方法 virtual
子类重写 override
实例如下:
建立一个fly类然后创建一个方法:

class fly
   {
      public string flying()
      {
          return "我会飞";
       }
   }

建立一个子类:

public class plane : fly
  {
  }

如果要改变子类的内容可以给父类加一个虚方法:

public virtula string flying()
   {
   }

然后在子类重写就可以改内容了:

public override string fliying()
  {
        renturn"需要更改的内容";
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装、继承多态是面向对象编程中的三个重要概念。下面是一个使用C#语言演示封装、继承多态的代码示例: 封装示例: ```csharp using System; namespace EncapsulationApplication { class Employee { 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 Display() { Console.WriteLine("Name: " + name); Console.WriteLine("Age: " + age); } } class Program { static void Main(string[] args) { Employee emp = new Employee(); emp.Name = "John"; emp.Age = 30; emp.Display(); Console.ReadKey(); } } } ``` 在这个示例中,Employee类封装了私有字段name和age,并通过公共属性Name和Age提供对它们的访问。Main方法中创建了一个Employee对象emp,并通过属性设置和Display方法展示了封装的效果。 继承示例: ```csharp using System; namespace InheritanceApplication { class Shape { protected int width; protected int height; public void setWidth(int w) { width = w; } public void setHeight(int h) { height = h; } } class Rectangle : Shape { public int getArea() { return width * height; } } class Program { static void Main(string[] args) { Rectangle rect = new Rectangle(); rect.setWidth(5); rect.setHeight(7); Console.WriteLine("Area: " + rect.getArea()); Console.ReadKey(); } } } ``` 在这个示例中,Shape类作为基类,Rectangle类继承了Shape类。Rectangle类可以访问Shape类的protected字段和方法。Main方法中创建了一个Rectangle对象rect,并通过调用setWidth、setHeight和getArea方法展示了继承的效果。 多态示例: ```csharp using System; namespace PolymorphismApplication { class Shape { public virtual void Draw() { Console.WriteLine("Drawing a shape"); } } class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing a circle"); } } class Rectangle : Shape { public override void Draw() { Console.WriteLine("Drawing a rectangle"); } } class Program { static void Main(string[] args) { Shape[] shapes = new Shape[3]; shapes[0] = new Shape(); shapes[1] = new Circle(); shapes[2] = new Rectangle(); foreach (Shape shape in shapes) { shape.Draw(); } Console.ReadKey(); } } } ``` 在这个示例中,Shape类定义了一个虚拟的Draw方法,Circle类和Rectangle类分别重写了这个方法。Main方法中创建了一个Shape类型的数组,并分别用Shape、Circle和Rectangle的实例填充数组。通过遍历数组并调用Draw方法,展示了多态的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值