面向对象封装继承多态

面向对象

 OOP三个特点:继承  封装  多态

面线对象,面向世间万物,面向各种业务结构。

封装

 封装就是对一些事物行为属性的私有隐藏 共有展示,细节隐藏 功能展示。保护细节 私有成员,实现功能模块化。

子类可以用于父类一切的属性和行为。任何父类出现的地方子类都可以替代。

封装变化,降低耦合,软件实体扩展,而不是修改,也就是开放闭合原则。

继承

1、提高代码的重用性,以及代码结构性。

  继承之后将会拥有父类的行为和属性(在可见范围之内),更加符合客观世界规律。

  里氏替换原则:所有父类出现的地方都可以无缝的用子类替换。

2、this    继承的时候在子类中,指当前类

  base  继承的时候在子类中,指父类

3、new(属性  方法)

  子类同名方法属性会隐藏父类的同名方法属性,如果不写new修饰符会提示如下警告

  警告 CS0108 “Teacher.CreateID2”隐藏继承的成员“People.CreateID2”。如果是有意隐藏,请使用关键字 new。 MyAbsInt E:ProgectC#MyAbsIntMyAbsIntEntityTeacher.cs 17 活动。

  注意这个只是警告。即使不加new他也会隐藏的。

4、object是一切类型的父类。

  子类继承父类的属性 方法,任何父类出现的地方都可以用子类替代

5、C# 语言中是单继承,但是接口可以多继承(一直想不明白为啥单继承,一个人还有爸爸妈妈呢,对于单继我的个人理解:也可能是考虑到最原始的单细胞生物,一个变两个这种繁殖方式。单细胞生物还可以进化为多细胞,高级动植物。)

6、OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

7、关于抽象,C#中关键字abstract,抽象类不能被实例化,只能被继承。但是抽象类可以继承class   interface  abstract类型。

8、关于接口,记得上学的时候老师说,默认的认为接口是抽象的,接口里面的方法是公共 抽象的,所以接口方法不加public。其实编译为中间语言他就是这样的(但是还加的有别的修饰)。

9、虚方法,是有实现体的方法(抽象方法是没有的),子类如果有相同的方法  可以使用override或者new修饰符修饰。             override会覆盖父类方法,把父类赋给父类,父类表现的是子类的方法(这个是多态)           new则是隐藏父类成员

10,、覆盖(覆写)与重载(重写):方法重载就是方法名字一样参数不一样和返回值没有关系。(如果参数一样,方法名字一样。但是返回值不一样,编译器认为是同一个函数  提示报错)

多态

同一方法不同类型对象(同一父类)中表现不同行为

就是要通过覆盖override,能用覆盖的有抽象方法    虚方法       接口。但是最好用抽象类,

代码下载

原文地址:https://www.cnblogs.com/wudequn/p/6719945.html