面向对象

面向对象的原理:
 在面向对象中,一些皆对象
 面向对象具有三大特征:封装、继承、多态
 类和对象的区别:
类是抽象的,仅仅是模板
对象是由类产生的实实在在的实体。
封装:隐藏内部实现,提供公共的接口
   步骤:
私有化成员变量
提供公共属性进行访问
在属性中添加有效值的限制
public:无任何的访问限制
private:只能在类的内部使用
protected:可以在本类或子类中使用
internal:同一个程序集(项目)中可以使用
protected internal:可以在同一个程序集中或不同程序集的子类中

类的默认访问修饰符:internal
类中成员默认访问修饰符:private

属性:用于对字段进行封装

静态方法:一个类中所有对象所共享的方法
实例方法:一个类中每个对象都独立拥有的方法

构造方法:创建对象时自动的调用的方法
作用:用于对对象中字段进行初始化
特点:
不存在返回值   方法名与类名相同
语法:
public 方法名(参数列表)
{
   代码块;
}


方法重载:同一个类或子类与父类中 相同的方法名 不同的
参数


继承:子类沿用父类的属性和方法的一种方式。
通过":"实现继承关系
子类只能继承父类部分属性和方法
子类可以定义自己的方法
特点:单根性 相对性 传递性

as:用于进行强制类型转换  is:用于类型判断

多态:不同类对于同一个方法的不同实现
  分类:方法重写(较多)和方法覆盖

方法重写:对父类中方法的不同实现
可重写方法:虚方法、已重写方法、抽象方法
要求:
在子类与父类之间
访问修饰符、返回值类型、方法名和参数列表要完全一致
虚方法:与普通方法定义一致,通过virtual关键字修饰
重写方法:与普通方法定义一致,通过override关键字修饰
调用:取决于对象

方法覆盖:将父类的方法进行隐藏,定义全新方法,用于替代父类的方法
可隐藏方法:一般的方法均可以隐藏,构造方法、抽象方法不能隐藏
注意:override不能与new或virtual不能同时使用
要求:
在父类和子类中
方法名和参数列表必须一致
方法隐藏时,可使用new关键字隐藏父类中方法,若未使用new关键字,将出现警告
调用:取决于引用

Sealed关键字  可用于修饰类和方法
修饰类:密封类,不能被继承
修饰方法:密封方法,需要和override一起使用,防止重写方法被再次重写

抽象类:对类的部分实现,用于约束子类的行为,其中抽象方法需要子类进行实现   abstract
  抽象类不能实例化
抽象类可以定义已实现的方法
sealed和static关键字不能修饰抽象类(密封类和静态类都不允许被继承)

接口:为了实现某种功能而定义的一组方法的集合 interface
接口之间可以多继承

抽象方法:abstract关键字修饰  子类必须通过override重写  不允许有方法体  只能定义在抽象类中
虚方法:virtual关键字修饰  子类可以通过override重写  必须要有方法体  不能定义在密封类中


抽象类与接口的
相同点:
   不能实例化
   可以包含未实现方法
   子类须实现未实现的方法
   引用可以指向实现类的对象
不同点:
  抽象类:abstract修饰 可以继承类 可以实现接口 可以包含实现方法        子类通过OVerride实现
  接口:interface修饰 不能继承类 可以继承接口  子类直接实现

C# 3.0语言主要增子类须实现未实现的方法
强点:隐含类型局部变量 扩展方法
对象与集合初始化器  匿名类型   Lambda表达式
查询表达式( LINQ ) 表达式树

 

你可能感兴趣的:(面向对象)