抽象类实在一个类型上进行抽象,而接口类似与一个动作,或者方法上。比如人类我们可以抽象出来作为一个抽象类。而人类的走路这个动作我们可以定义为一个接口。

struct:结构体,值类型

抽象类 abstract

1,抽象类不能实例化

2,抽象方法是必须被子类重写的方法

3,如果类中包含于抽象方法,那么类就必须定义为抽象类,不论是否还含有其他一般方法

4,抽象类中可以有成员变量

抽象方法没有方法体

protected abastract string name();

声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口 Interface

1,接口中不能有成员变量

2,必须实现接口中的方法

3,接口可以继承接口。

把隐式公共方法和属性组合起来,以封装特定功能的一个集合,一旦实现了接口,类就可以支持接口所制定的所有属性和成员,不允许接口中有任何成员的执行方式,接口中的方法或属性前面不能有修饰,方法没有方法体

Interface IChange

{

string ChangThing(string str);

}

在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

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

抽象类可以实现(implements)接口,抽象类是否可继承。

实体类,但前提是实体类必须有明确的构造函数。

什么是虚函数?什么是抽象函数?

虚函数:没有实现的,可由子类继承并重写的函数。

抽象函数:规定其非虚子类必须实现的函数,必须被重写。

overload与override的区别?

overload 重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。返回类型可以不相同。
override 重写是进行基类中函数的重写。实现多态。派⽣类重写基类的⽅法,⽅法命名、返回类型,参数必须相同 
重载是面向过程的概念。重写是面向对象的概念。

作⽤:重写主要是实现⾯向对象的多态性、重载主要是实现实例化不同的对象

什么时候⽤重载?什么时候⽤重写?

当⼀个类需要⽤不同的实现来做同⼀件事情,此时应该⽤重写,⽽重载是⽤不同的输⼊做同⼀件事情

常见的访问修饰符有?
(1)public 公有访问。不受任何限制。
(2)private 私有访问。只限于本类成员访问,子类。
(3)protected 保护访问。只限于本类和子类访问。
(4)internal 内部访问。只限于本项目内访问,其他不能访问。
(5)protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问