
一、方法函数方法就是把完成某一个独立功能的代码抽取出来封装成一个代码块。好处①代码复用不用重复写②逻辑清晰方便维护③便于调试修改。1、方法的定义[访问修饰符] 返回值类型 方法名([参数列表]){//方法体}访问修饰符public公开哪里都可以调用private仅本类内部使用。static静态方法可以直接类名调用没有 static 叫实例方法必须 new 对象调用。返回值类型不需要返回数据写void如果要返回数据写对应数据类型方法内部必须使用return不写的话会报错return作用包括将数据返回给调用处立刻结束当前这个方法后面代码不会执行。方法命名规范大驼峰命名法每个单词首字母大写。参数列表完成功能需要的外部传入的数据没有参数小括号不能省略其中参数列表可有可无根据具体需求设置参数。2. 方法的 4 大类1、无参无返回值public static void SayHi(){}2、无参有返回值public static int GetMax(){ return 10; }3、有参无返回值public static void PrintNum(int num){}4、有参有返回值public static int Add(int a,int b){ return ab; }调用同个类里面直接写方法名(实参)不同类使用类名.方法名(实参)。3. 实参与形参1、形参方法定义括号里面的变量相当于占位符。2、实参调用方法的时候传入的真实数据。、4. 参数传递机制1、值类型--值传递包括整形浮点型字符形结构体等数值类型其用法是将形参值赋给另一形参值在方法类的参数值不受方法外值的影响因为二者在内存中为两块独立栈。如结果为2、引用类型--引用传递包括数组string类等数值类型其用法是将形参值赋给另一形参值在方法类的参数值受方法外值的影响因为二者为同一堆内存。注如果方法内定义了新实例则方法外形参不受影响。二、面向对象--封装封装将字段私有化对外暴露可控访问入口隐藏内部细节保护数据安全。其核心思想为字段私有属性公开访问。1、访问修饰符1、private私有只有当前类可以访问字段一般都用 private 修饰。2、protected受保护本类、继承的子类可以访问外部不行。3、public完全公开任何地方都能访问。2. 属性 get /set1、get读取字段的值2、set给字段赋值关键字value代表调用方传入的值。例如在一个Person类里3、构造函数1、方法名和类名完全一模一样没有返回值不能写 void。2、使用new 类名()创建对象的时候会自动执行构造函数构造函数的作用就是给对象属性做初始化。3、构造函数可以重载多个构造参数列表不同。4、如果完全不手写任何构造函数编译器自动赠送一个无参构造函数一旦手写了有参构造编译器不再提供默认无参需要我们手动写出来。4.static 静态1、被 static 修饰的成员属于类本身不属于实例对象。直接类名.成员名调用不需要 new 对象。2、静态成员在类加载的时候就分配内存优先于对象存在。3、静态方法里面不能直接访问实例成员非静态属性、方法不能使用 this 关键字。4、实例方法没有 static既可以访问实例成员也可以访问静态成员。5、static 静态变量所有对象共享同一份数据。三、继承 Inheritance继承class 子类 : 父类子类复用父类已经写好的代码描述 is‑a 的关系。注继承中是单继承即子类只能有一父类不能同时继承多个父类但支持多层继承。1、子类可以继承父类public、protected成员不会继承父类 private 私有字段但是可以通过 public 属性间接使用。2、base关键字base.成员名在子类中访问父类的属性、方法。base(参数)子类构造函数调用父类的构造函数必须写在构造函数第一行。在主程序中实例化对象时会先调用父类的构造函数后调用子类构造函数。四、抽象类 abstract当父类知道子类应该拥有什么行为但是父类不知道这个行为具体怎么实现就可以定义抽象类。1、abstract修饰的类叫抽象类。2、抽象方法public abstract void Eat();只有方法声明没有方法体。3、包含抽象方法的类必须是 abstract 抽象类。4、注抽象类不能 new 创建实例对象。5、如果普通类继承抽象类必须重写抽象类里面全部抽象方法使用 override。6、抽象类可以拥有普通字段、普通属性、普通方法、可以拥有构造函数供子类 base 调用初始化数据。7、限制abstract不能和private、static一起修饰方法。private子类看不见无法重写static可以直接类名调用但是抽象没有方法体毫无意义。五、接口 interface接口代表一套行为规范、契约。接口只规定 “你应该拥有哪些功能”不关心怎么实现。1、使用interface关键字定义类使用:来实现接口不是继承。2、接口不能有字段不能写构造函数里面全部是抽象成员方法、属性。3、接口不能 new 实例。4、C# 类可以实现多个接口弥补类单继承的缺陷。class Dog:IEat,IRun,ISwim{}5、接口和接口之间可以多继承。例如抽象类和接口区别对比项abstract 抽象类interface 接口父子关系类只能继承一个抽象类类可以实现多个接口字段允许写字段、常量不允许写任何字段方法抽象方法 完整有方法体普通方法全部都是抽象方法构造函数可以有构造函数没有构造函数设计定位描述这一类事物是什么描述具备哪些功能行为六、多态动态多态有三个必要条件缺一不可1、继承2、父类虚方法子类重写3、父类引用变量指向子类实例对象。最后这篇文章重点总结1、子类继承父类子类构造默认调用父类无参构造父类没有无参构造子类编译报错需要写base()指定调用父类有参构造。2、out 必须方法内部赋值ref 调用前外部变量必须赋值。3、抽象类可以有构造函数接口绝对没有构造函数。4、类单继承接口多实现。5、重写必须 virtualoverride重载只要求参数列表不同。6、值传递复制数值不会改变外部引用类型传递地址修改对象内部数据外部同步变化。7、static 属于类实例属于对象静态方法不能访问实例成员不能用 this。