C# 封装,继承,多态,抽象类,接口的简单理解

封装:
对某一事物抽象为一个类,对类的编写就是封装,封装的目的是为了隐藏数据和功能实现细节,对外提供访问接口。

继承:
继承是对某一系列事物的层次封装和扩展。

多态:
通过子类继承父类,实现父类方法在不同的子类中有不同的形态。

访问修饰符:
public,private,protected,internal

const:
修饰常量;在应用程序中永远不变的值

readonly:
和const不同,它只能修饰字段(不能用于局部变量),只能在构造函数和初始化器中修改,每个实例的readonly字段都可以不同。

partial:
修饰分部类,分部方法(返回值只能为void)。

sealed:
修饰密封类,不能被继承。

abstract:
修饰抽象类,抽象方法
1.抽象成员必须标记为abstract,并且不能有任何实现。
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化
4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。(除非子类也是一个抽象类,则可以不重写)
5.抽象成员的访问修饰符不能是private
6.在抽象类中可以包含实例成员。并且抽象类的实例成员可以不被子类实现
7.抽象类是有构造函数的。虽然不能被实例化。
8.如果父类的抽象方法中有参数,那么,继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。

interface:
修饰接口
1.接口是一种规范。也是一种能力。
2.只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员
3.接口的功能要单一
4.有了接口可以实现多态。继承抽象类,子类对父类的虚方法重新都可以实现多态。
5.接口不能被实例化。也就是说,接口不能new(不能创建对象)。
6.接口中的成员不能加访问修饰符,默认的访问修饰符是public。
7.接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。
8.接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。
9.接口与接口之间可以继承。
10.接口并不能去继承一个类,而类可以继承接口(接口只能继承于接口,而类既可以继承接口,也可以继承类)。
11.实现接口的子类必须实现该接口的全部成员。
12.一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。class MyClass:A,IA{},因为类是单继承的。
13.显示实现接口的目的:解决方法的重名问题。什么时候显示的去实现接口?当继承的接口中的方法和参数一摸一样的时候,要是用显示的实现接口
14.当一个抽象类继承接口的时候,需要继承抽象类的子类去实现接口。

抽象类和接口的区别:
c#对类只能单继承,除此之外还能继承多个接口;抽象类提供了对象基本的行为抽象,接口提供了对象的能力扩展。
一般情况下抽象类一般用来对子类的公共抽象,抽象类尽量在设计之初就要考虑好,抽象类应该是稳定的不希望以后被修改,因为抽象类的扩展只能修改抽象类,导致所有子类将被修改。
接口也应该是稳定的,并且功能要单一(接口隔离原则)。在使用接口隔离原则时,我们需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;
接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便;接口的扩展可以写另一个接口,子类可按需继承实现扩展。

规范:
一般要优先选择类而不是接口。用抽象类将契约(类型做什么)与实现细节(类型怎么做)分离开。
想在已从其他类型派生的类型上扩展功能时,就考虑接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值