标签:关键字 显示 派生 无法 str strong 在家 重写 oid
什么是面向对象:面向对象就是所以的操作都是基于对象,就好比如让车子走起来,走起来这个动作是车子这个对象的,车子.走起来。
面向对象的特性:三大特性“封装、继承、多态”
一、封装
1.1封装的概念:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。
1.2封装的优点:
A.良好的封装能够减少耦合(比如实现界面和逻辑分离)。
B.可以让类对外接口不变,内部可以实现自由的修改。
C.类具有清晰的对外接口,使用者只需调用,无需关心内部。
D.因为封装的类功能相对独立,因此能更好的实现代码复用。
E.可保护代码不被无意中破坏,通过私有字段等实现内部。(私有属性、方法)
二、继承
2.1继承的概念:当一个对象能够获取另一个对象的非私有属性、方法作为定义为自己的部分或全部时,我们称之为继承关系。在继承中,被继承的对象叫做父类或者基类,继承的对象称为子类或者派生类。一个类可以有多个派生类,也就是一个类可以被多个类继承.
2.2继承的特点:
A.子类(派生类)拥有父类(基类)所以的非私有属性、方法。//延续
B.子类可以拥有自己独特的特性(属性、方法)。//新增
C.子类可以以自己的方式实现父类的功能。//方法重写
2.3继承需要注意的地方
A.父类进行改变子类也会进行改变。
B.继承破坏了封装,父类的细节暴露给了子类,增加了耦合性。
C.父类的私有成员(属性、方法)子类是无法访问。
D.被“sealed”关键字修饰的类将不能被继承;
E.被“protected”修饰的成员或者数据可以直接被派生类访问,属于“可以在家族里分享的秘密”。
F.善用“base”关键字,显示调用合适的自定义基类构造函数而不是使用默认构造函数。
E。C#只能一个类直接继承一个类。
三、多态
3.1多态的概念:同一个操作用于不同的对象,会有不同的解释,产生不同的结果。这种特性称为多态性。
3.2多态的分类:编译时的多态(重载)、运行时的多态(重写)
重载(overload):重载指的是同一个类中有两个或多个名字相同但是参数(参数签名)不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。//方法名相同,参数或者返回类型不同
重写(override):重写是指子类对父类中虚函数或抽象函数的“覆盖”,重载也叫过载。//虚方法是用virtual关键字声明的方法
两种重写:
A.使用override关键字重写.public override void Eat(){}//覆盖父类方法
B.使用new关键字重写.public new void Eat(){}//隐藏父类方法
两者的区别在于如果我们使用override关键字,父类的方法被覆盖,A b = new B();b.Eat();执行的是B(子类)的Eat()方法,因为父类的被覆盖了(B继承于A )。
我们使用new的话,只是隐藏了父类的方法,方法还是会被执行,b.Eat();则执行的是A(父类)的Eat()方法。我们修改成B b = new B();b.Eat();执行的就是B(子类)的了。
标签:关键字 显示 派生 无法 str strong 在家 重写 oid
原文地址:http://www.cnblogs.com/UnrealEra/p/7026874.html