.NET基础回顾(四)

一.抽象类

1. 抽象方法用abstract修饰。

2. 抽象方法不能有方法体,大括弧也不能有。

3. 抽象方法必须在抽象类中。

程序示例:

1 abstract class Person
2 
3 {
4 
5                   public abstract void SayHi();
6 
7 }

4. 抽象方法不能实例化,因为有抽象成员,而抽象成员是没有方法体的。

5. 子类必须重写父类的抽象方法。(和virtual虚方法最大的不同点)

6. 在子类中无法通过base关键字调用父类的抽象方法。

7. 抽象方法是光说不做,只是定义了具有这样的行为,但是具体的实现交给子类。

8. 抽象类中可以拥有非抽象成员,为了继承给他的子类。

9. 抽象类中可以拥有虚方法。

10. 子类必须重写父类的方法,父类没有必要实例化,就用抽象类。

11. 抽象类是被继承的,为了多态。

12.抽象方法不能是私有的,因为子类没办法访问,就没办法重写。

二.Tostring和Equals

1. object类里面equals方法是比较两个对象的引用地址,如果引用地址一样,则返回true。

2. string类型的equals方法比较的是两个字符串对象的内容,如果内容一样,则返回true。

3. 引用类型的Equals方法默认比较的是两个对象的地址,如果要改变这个规则,子类重写。

4. string值类型Equals方法比较的两个结构对象里的字段的值(这时候不存在重写,只是值类型自己新增了方法)。

二.接口

1. 使用interface来定义接口,接口表示具有某种能力。

2. 接口的本质是抽象类,是一个特殊的抽象类,所以接口不能实例化。

3. 接口内成员默认是抽象的。

4. 在接口中只能定义属性,方法,索引器,事件。

5. 抽象成员不能用访问修饰符,默认是public。

6. 实现接口的类,必须要实现接口中所有的成员。

7. 实现类在实现接口的成员的时候,不需要写override关键字。

8. 实现成员的时候,必须保证签名一致。

9. 接口就是一个纯粹的为了规范实现类的。

10. 多个具有相同的行为但是没有共同的父类就可以使用接口。

11. 一个类只能继承一个父类,但是可以实现多个接口,父类要写在第一个位置,一定程度上解决了类的单根性的问题。

12. 接口可以继承接口,并且可以继承多个接口。

13. 接口中的成员可以实现为抽象方法或者虚方法,便于实现类的子类去重写。

14. 显示实现接口是为了解决方法名冲突的问题,显示实现的接口的方法是私有的,所以不能通过对象的变量来调用。

15. 显示实现接口,这个接口的实现方法只能通过接口变量来调用。

16. 接口使用建议:

         (1)接口->抽象类->父类->具体类

         (2)避免定义“体积庞大的接口”,“多功能接口”,会造成“接口污染”,只把相关联的一组成员定义到一个接口中(尽量在接口中少定义成员)。(单一职责原则)

         (3)定义多个职责单一的接口。

三.装箱拆箱

1. 装箱:将值类型转换成引用类型。

2. 拆箱:将引用类型转换成值类型。

程序示例:

1 int i = 12;
2 
3 object obj = i;   //装箱
4 
5 i = (int)obj;        //拆箱

3. 装箱与拆箱是比较消耗性能的,要尽量避免在我们的程序中发生这样的行为。

转载于:https://www.cnblogs.com/HuoAA/p/4049258.html

你可能感兴趣的:(.NET基础回顾(四))