基础知识 - .Net 面向对象

1.Abstract class 和interface有什么区别?什么时候使用抽象类,什么时候使用接口?

答:接口和抽象类的区别:

(1)抽象类可以有构造方法/静态方法,接口中不能有构造方法/静态方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)接口可以被多重实现,抽象类只能被单一继承

(4)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

当描述一组方法(行为)的时候使用接口  当描述一个虚拟的物体的时候使用抽象类。例如:动物、(飞/跑)

2.您在什么情况下会用到虚方法?它与接口有什么不同?

答:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual 
在定义接口中不能有方法体,虚方法可以。
实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

3.C#中抽象方法与虚方法的区别

总结:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法;
虚函数是该方法有方法体,但是子类可以覆盖,也可不覆盖。
(1)虚方法有方法体,抽象方法没有方法体。抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化;
(2)抽象方法只能在抽象类中声明,虚方法不是;
(3)派生类必须重写抽象类中的抽象方法,虚方法则不必要。

4.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?

答:接口可以继承接口。抽像类可以实现(implements)接口, 抽像类是可以继承实体类

5.构造器Constructor是否可以被继承?是否可以被Override?

答:Constructor(构造器)不能被继承,所以不能被override(重写),但是可以被overloading(重载)。

6.抽象方法可以是静态方法吗?

答:抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。

7.C#中类(class)与结构(struct)的异同

答:结构Struct是值类型:值类型在堆栈上分配地址;类Class是引用类型:引用类型在堆上分配地址;结构是值类型所以结构之间的赋值是创建新的结构,而类是引用类型,类之间的赋值只是复制引用。

posted @ 2019-09-11 14:55  FH1004322  阅读(110)  评论(0)    收藏  举报