• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#基础知识之OOP及OOP三大特性

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C#基础知识之类和结构体中我详细记录了类、类成员、重载、重写、继承等知识总结。这里就记录一下对面向对象和面向对象三大特性的广义理解。

类是面向对象编程的基本单元,面向对象思想其实就是教给我们如何合理的运用类的规则去编写代码。

二、理解面向对象的三大特性

1、封装

封装就是通过给类及类中的成员变量、属性和方法设置不同的访问修饰符(public、protected、internal、protected internal、private)来控制它们的作用范围,以达到封装的目的。 

2、继承

什么是继承?顾名思义,就是子类根据C#的规则继承父类的方法或者数据成员的一种方式。

(1)C# 不支持多重继承。但是,您可以使用接口来实现多重继承      

//基类   
   class Shape 
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 接口 PaintCost
   public interface PaintCost 
   {
      int getCost(int area);
   }
   // 派生类
   class Rectangle : Shape, PaintCost
   {
      public int getArea()
      {
         return (width * height);
      }
      public int getCost(int area)
      {
         return area * 70;
      }
   }
   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();
         int area;
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         // 打印对象的面积
         Console.WriteLine("总面积: {0}",  Rect.getArea());
         Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }    
View Code

(2)一个对象用父类声明,使用子类实例化的三种情况

  • 一般情况下:你用正常的办法访问不到子类自己的成员,只能访问到从父类继承来的成员。        

         

  •   在子类中用 override 重写父类中用 virtual 申明的虚方法的情况下,执行时调用的是子类中重写的方法;        

 

执行结果

         

 

  • 如果子类中用 new 覆盖父类中用 virtual 申明的虚方法情况下,执行时调用的是父类中的虚方法;

运行结果

         

深究其原因,为何两者不同,是因为原理不同: override是重写,即将基类的方法在派生类里直接抹去重新写,故而调用的方法就是子类方法;而new只是将基类的方法在派生类里隐藏起来,故而调用的仍旧是基类方法。

3、多态

(1)概念

如何理解多态?多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。总体而言,就是调用相同的方法,表现出不同的行为,称之为多态。

(2)多态性的常见体现

虚方法、抽象类、接口

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#WebRequestWebClientPost请求无乱码发布时间:2022-07-14
下一篇:
C#枚举显示中文发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap