面向对象的原理:
在面向对象中,一些皆对象
面向对象具有三大特征:封装、继承、多态
类和对象的区别:
类是抽象的,仅仅是模板
对象是由类产生的实实在在的实体。
封装:隐藏内部实现,提供公共的接口
步骤:
私有化成员变量
提供公共属性进行访问
在属性中添加有效值的限制
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 ) 表达式树