c#学习日记2

c#中快捷键: 

ctrl+k+d:可以使代码对齐

ctrl+k+c:可以注释代码

面向对象的三大特征:封装,继承,多态

1.封装

  访问修饰符:(1)public (2)private (3)internal (4)protected

2.继承

(1)字段的继承

(2)方法的继承

上图中son类继承father类,如果要是子类对象调用父类方法时,则父类构造方法前需要加上public修饰符,否则就会报错。

(3)关键字this和base:this和base关键字,不能用于静态方法中

         this表示当前类的,base表示继承类中的

(4)方法覆盖,在子类中有与父类同名的方法,调用时先调用子类中的方法。

(5)子类与父类的构造函数之间的参数传递

        程序执行过程中,先执行父类的构造函数,再执行子类的构造函数。

如果无参构造子类对象时,首先会进行子类的无参构造函数,之后进行父类的无参构造函数。

如果带参构造子类对象时,首先进行子类的带参构造函数创建子类对象,之后会将参数传递到父类带参构造函数中执行父类的带参构造函数。

3.命名空间(namespace) 文件夹

在一个项目中,不同文件夹下可以放相同的程序

实例化时需要注意加上文件夹的名字或者在命名空间上加上using MySecondProject。

4.如果需要项目跨程序集来运行需要注意以下几点

 (1)如果Internal_A中需要访问Internal_B中的方法,需要在Internal_A的依赖项中添加项目引用

 (2)需要将类名和方法名全的访问修饰符都改成public

 5.属性:

属性的作用:(1)实现对字段封装的一个手段,主要实现对字段的读和写的控制。

                      (2)实现对字段数值的范围控制

如果字段是私有类型(private),往往定义字段都是以下划线开头(eg:_intAge)

快捷生成属性方法:单击字段,右击快速操作和重构,选择封装字段并使用属性。

6.面向对象 多态

  (1)方法重载:类中,方法的名称相同,但是方法的参数个数或者参数的数据类型(返回值类型)不相同的的这种方式称为面向对象的“方法重载”。

  (2)构造函数重载:是方法重载的一个特殊例子

  (3)方法重写:

           方法重写与方法覆盖的区别:方法重写,基类中的方法使用virtual修饰,子类中的方法用override来修饰

方法重写的作用:把基类的写的不成熟的方法,在子类中进行重写,来完善方法,而方法覆盖是无意而为之的。

  (4)密封

           密封类,不能够继承,不能够存在虚方法,密封类中的方法就是密封方法

           密封方法  要求:(1)密封方法,必须是在子类方法中对基类虚方法的重写进行密封

                                      (2)密封方法,sealed必须和override一起出现

  不能对密封方法进行重写,只能对其进行覆盖

  (5)抽象

            对类或者方法,用abstract进行修饰,使之变成“抽象类”或“抽象方法”

定义抽象方法时,必须在abstract前面或后面加上public否则就会报错,因为默认情况下是私有的

规则:

        1》抽象类的子类,必须实现抽象父类中的所有抽象方法

        2》抽象类不能实例化

        3》抽象方法没有方法体

        4》抽象类不能是密封或者是静态的

        5》子类使用override来实现抽象方法

        6》抽象方法一定在抽象类中,但是抽象类中不一定要包含抽象方法

        7》抽象的方法不能是私有的,而且抽象方法机器重写方法的访问限制应当相同

        8》抽象方法不能使用virtual来修饰,区分“虚方法”与“抽象方法”。虚方法中有方法体,而抽象方法中没有方法体。

 (6)接口

        规则:

                1》接口中定义是方法,并且方法没有方法体

                2》接口中没有字段,只有不包含方法体的方法的罗列

                3》接口的继承类。需要实现接口中的所有方法

 (7)多态性

        虚方法:父类中定义一个虚方法,用virtual修饰,子类覆盖父类中的方法,override。

        抽象方法:父类中定义一个抽象方法,用abstract修饰,子类中用override重写抽象方法。

        接口:定义一个接口,在子类中实现接口中的方法

        面向对象多态性的具体的使用方法

        1》声明父类,new子类,可以实现动态多态性。降低类之间的耦合性(高内聚,低耦合)

        2》功能定义与功能实现相分离,做到了模块化

        3》能用接口,就不用抽象类(抽象方法);能用抽象,就不用虚方法

猜你喜欢

转载自blog.csdn.net/m0_56632799/article/details/127927959
今日推荐