抽象类实在一个类型上进行抽象,而接口类似与一个动作,或者方法上。比如人类我们可以抽象出来作为一个抽象类。而人类的走路这个动作我们可以定义为一个接口。
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 内部保护访问。只限于本项目或是子类访问,其他不能访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)