C#里封装 继承 多态(包教包会)

一、封装
C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。
在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。
此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。一个类中包含敏感数据,有些人可以访问,有些人不能访问,如果不对这些数据的访问加以限制,后果将会非常严重。所以要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。

封装语法:
Public 数据类型 变量名
{
get
{
return 变量名
}
set
{
变量名=value;
}
}

这里写图片描述
这里写图片描述

当然了!get和set有快捷键的:光标选择要封装的属性然后右键点击快速操作和重构…(Chrl+.)点击封装字段(并使用属性)

这里写图片描述

这里写图片描述


二、继承
继承是面向对象最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承类的所有成员。在面向对象编程中,被继承的类称为父类或基类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C#一次只允许继承一个类,不能同时继承多个类。
承语法:
Public class 类名:父类名

如何使用父类里面的成员变量,方法,构造函数?
关键字:base

成员变量:
base.成员变量名
方法:
base.方法名

**一个类只能继承一个父类跟Java不一yangc#中类继承只允许单继承,但是接口继承允许多继承 ,一个子接口可以有多个父接口, 接口可以从零或多个接口中继承.级继承常会引起继承来的类之间的混乱,继承而来的方法往往没有唯一性,所以C#中类的继承只可以是一个样
但是可以同时现接口!
这里写图片描述
---------三、多态
多态性意味着有多重形式。
在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
多态性可以是静态的或动态的。
在静态多态性中,函数的响应是在编译时发生的。
在动态多态性中,函数的响应是在运行时发生的。

1.静态多态性
在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。
分别为:
1.1方法重载:
可以在同一个范围内对相同的方法名有多个定义。
方法的定义必须彼此不同,可以是参数列表中的参数类型不 同,也可以是参数个数不同。
不能重载只有返回类型不同的方法声明。

1.2运算符重载

2.动态多态性
当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法。
2.1:虚方法是使用关键字 virtual 声明的。
2.2:虚方法可以在不同的继承类中有不同的实现。
2.3:对虚方法的调用是在运行时发生的。
2.4:动态多态性是通过抽象类和虚方法实现的。

定义虚方法:
访问修饰符 virtual 返回的数据类型/void 方法名()
{
//执行代码,也可以完全不写
}
重写父类的方法(子类中):
访问修饰符 override 返回的数据类型
void 方法名()
{
//执行代码
}-

namespace PolymorphismApplication
{
   class Printdata
   {
      void print(int i)
      {
         Console.WriteLine("Printing int: {0}", i );
      }

      void print(double f)
      {
         Console.WriteLine("Printing float: {0}" , f);
      }

      void print(string s)
      {
         Console.WriteLine("Printing string: {0}", s);
      }
      static void Main(string[] args)
      {
         Printdata p = new Printdata();
         // 调用 print 来打印整数
         p.print(5);
         // 调用 print 来打印浮点数
         p.print(500.263);
         // 调用 print 来打印字符串
         p.print("Hello C#");
         Console.ReadKey();
      }
   }
}//参考资料在QQ群:683782676
上面代码被编译执行时结果是
Printing int: 5
Printing float: 500.263
Printing string: Hello C#:


相关推荐
SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环; 步骤说明: 1.用Microsoft Office Word打开word原件;将文档中需要动态生成的内容,替换为属性名 ${name} 2.另存为,选择保存类型Word 2003 XML 文档*.xml 3.用Firstobject free XML editor打开文件,选择Tools下的Indent【或者按快捷键F8】格式化文件内容。左边是文档结构,右边是文档内容; 4. 文档生成后有时需要手动修改,查找第一步中设置的属性名,可能会产生类似${n.....ame}类似的样子,我们将将名字中间的标签删掉,恢复为${name} 5. word模板中有表格,需要循环的位置, 用 标签将第二对 标签(即除表头的w:tr标签后的一对)包围起来 同时表格内的属性例如${name},在这需要修改为${user.name} (userList是集合在dataMap中的key, user是集合中的每个元素, 类似), 如图: PLUS:若表格之外还有嵌套的循环,也需要用,注意这的标签不要和某对其他标签交叉,不可以出现这种 6. 标识替换完之后,另存为.ftl后缀文件即可。 代码是相对有一丢丢复杂的,两层嵌套循环; 总dataMap deptName 部门名 list(Table)表的集合 table1(map) table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC …… table2 table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页