C#面向对象编程-—封装性

面向对象编程三大特性

封装性:如何设计一个类

广义封装: 从整个项目的设计角度出发

狭义封装:通过访问修饰符控制类中成员的访问权限

如何实现狭义封裝?

类包含:类中的字段-特征      类中的方法-行为

类中的字段私有化,类中的方法公开化

实现方式:一般,类中包含的成员有两部分:

一是类中的字段,二是类中的方法

类中的字段私有化private,类中的方法公开化public

继承性:多个类出现相同内容时,要提取父类。子父类

多态性:对象多个选择

一、封装性

访问修饰符:

public-公有

private-私有,只限于本类成员内访问,子类、实例都不能访问

protected-保护,只限于本类内部和子类内部可访问,实例不能访问

internal-内部,限于本项目(相当于项目里的public)

private-创建一个类之后, 类中添加了字段和方法

protected internal-内部保护,=protected+internal

注:如果字段或方法省略了访问修饰符,那么省略的其实是private

也就是说:字段和方法的默认权限是private

protected类型解释:

若被引用的程序集中有子类A:B,那A中public类型的属性、方法和B中public类型的属性、方法都既可以通过A的实例或类名来调用,又可以在A内部直接使用,但A、B中protected类型的属性、方法只能在A内部直接使用,不能通过A的实例或类名来调用;

若引用程序集的一方C继承了A,那A、B、C中public类型的属性、方法都既可以通过C的实例或类名来调用,又可以在C内部直接使用,但A、B、C中protected类型的属性和方法只能在C内部直接使用,不能通过的实例或类名来调用。

默认访问修饰符

命名空间内部的(class、struct、abstract class、interface、delegate、enum)的访问修饰符默认都是internal

可以人为改成public类型,不能改成protected、protected internal、private类型

类class前面省略的也是 internal

属性语法:

public   返回值类型   属性名

 {

get  {return 字段名;}

set  {字段名=value;}

注: 1.属性名和字段名是对应的,只是属性名应该首字母大写;

2.一个属性中对应两个方法: get | set

通过get访问字段的值,通过set设置字段的值

3.如何利用属性访问或设置值?

对象名.属性名=值; //设置值        对象名.属性名;//访问值

  1. 将具体值设置到字段上时,有一个隐含的变量value是先将具体值交给value变量,再由value变量给字段。value的类型会与当前操作的字段匹配。
  2. 总结:字段私有化,方法公开化个私有化字段对应一个标准属性(包含两个方法(get|set)

如何实现封装----属性

标准属性

1)特点      4)标准属性可设置只读操作,只写操作

2)属性的两个方法     3)属性中的set,对数据进行业务逻辑处理

只读:只能访间字段的值,而不能为字段设置值

只写:只能为字段设置值,设置完值,是不能访问的。

当然,可以设置只读或只写权限,也可以设置既可读也可写

创建-一个Student类

类中包含两个字段:

学生姓名----name 字段,标准的属性Name

学生学号----自动属性No

标准属性和自动属性

1.自动属性是prop,按两次Tab不需要再自己定义私有字段,系统会在自动属性中自动添加一个对应的私有字段

2.何时使用自动属性?----编码中,一般都是使用标准属性。

但是,如果-一个类中有大量的字段(如: 50个)但是对字段设置值或访问值时,只是做最简单的设置和访问而不需要对数据进行任何的处理(比如:数据是否合法)这表明,使用属性进行了封装,符合类的设计规则。

自动属性get和set必须成对出现,在自动属性中,不能再设置只读或只写一种权限;自动属性中不能在set中添加业务代码对字段的值进行相应判断的操作。

其中有两段借用了 changuncle 大佬的的内容

C#面向对象三大特性_xiaouncle的博客-CSDN博客_c#面向对象

现在接触的案例太少还看不太懂,不过感觉大佬总结的非常好,希望日后复习的时候都能弄明白~

猜你喜欢

转载自blog.csdn.net/xiaobaihao0311/article/details/122072249
今日推荐