`
- 浏览:
589736 次
- 性别:
- 来自:
杭州
-
Java的接口和C++的虚类的相同和不同处。C++的纯虚类(转)
c++虚类相当与java里面的抽象类,与接口的不同之处如下:
1、一个子类只能继承一个抽象类(虚类),但能实现多个接口;
2、一个抽象类可以有构造方法,接口没有构造方法;
3、一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有声明;
4、一个抽象类可以是public、private、protected、default,
接口只有public,default;
5、一个抽象类中的方法可以是public、private、protected、default,
接口中的方法只能是public和default.
相同之处:都不能实例化。
补充说明:接口是一类特殊的抽象类,是更抽象的抽象类,你可能这样理解。抽象类是一个不完整的类,接口只是定义了一些功能。打个比方,用抽象类和接口分别描述“猪”,抽象类就是在一般的类之前加abstrict,说:猪能用四肢跑,猪还能怎么怎么,接口的话只能说,猪会跑,用什么跑就是子类的事啦。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
首先接口是用来实现多重继承的。
接口,我们首先是可以多个类去继承,比如
Interface AddBonus
{
void mySalary();
}
Interface MinBonus{
void bossSalary();
}
我们可以在多个类中继承两个接口所含的空方法,比如是一个大会社的项目,
他有工厂的工人,总部写字楼的白领,但他们都要有奖罚,
可以令他们继承这两个接口
工人发奖金//十年碰了一次,他们很感动,暗自发誓要多干活(即自身可以有自己的方法)
public class Work
class Work: AddBounus
{
private void mySalary(doSomthing);
prvate void WorkHard(do something);
}
可是白领干的也不错,她们加了钱,又应为犯错,又扣钱了,那么她们要同时继承这两个接口
class WhiteColor:AddBounus, MinBonus
{
private void mySalary(doSomthing);
private void bossSalary(doSomething);
private void LeaveComany(I'll go);
}
c++ 中的虚类相当于java 中的抽象类,抽象类没有具体的方法实现,只有虚方法,她靠子类来实现多态,
比如公司中的员工的工资不一样,我们可以使用抽象类,抽象类里面在定义个虚方法
abstract class Employee{
virtual Salary();
}
子类经理override 这个方法
class Manager:Employee
{
private overrride Salary("Higher level");
}
部门 lead
class Lead
{
private override Salary("Middle level");
}
你看我们是在一个基类中实现了多种发工资的方法。
由上可见接口,抽象类有大的灵活性,你记住抽象类里面可以有接口,但接口里面不能有抽象类,在实际开发用接口还是用抽象类,要根具项目来,C# 子类必须要实现基类(父类所有虚方法)
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java中,没有直接对应于C++纯虚函数的概念,但可以通过**抽象方法**来实现相同的功能。一个包含抽象方法的类同样是抽象类,不能直接实例化,必须由子类实现抽象方法才能创建实例。 #### 虚基类与接口 在C++中,*...
在C++和Java中,虽然都支持多态性,但它们实现多态的方式有所不同。本文将深入探讨C++的虚函数和Java的抽象函数。 首先,C++的虚函数是通过在函数声明前添加`virtual`关键字来实现的。虚函数的主要作用是在运行时...
3. 多态:C++有静态多态(函数重载和运算符重载)和动态多态(虚函数和纯虚函数)。Java的多态主要依赖于方法的覆盖和接口的实现,所有引用类型的方法调用都会在运行时解析到实际对象的方法。 语法和特性差异: 1. ...
C++则通过纯虚函数实现类似接口的概念,但其语法和使用方式与接口有所不同。 总结起来,Java、C#和C++在继承、覆盖、多态和抽象类方面都有相似的基本原理,但在具体实现和使用上存在差异。Java倾向于安全性,C#兼顾...
4. **RTTI与类型转换**:使用C++的运行时类型信息(RTTI)功能,如 `dynamic_cast`,可以安全地在接口指针和实现接口的类指针之间进行转换,同时也可用于查询对象是否实现了特定接口。 5. **接口的继承**:接口可以...
8. **命名约定**:为了标识类是接口,可以采用类似Java中的"I"前缀,如`IWriter`,但这种做法在C++社区并不广泛。 9. **模板接口**:C++的模板机制允许我们创建泛型接口,这样接口可以适用于多种类型,增强了代码的...
- **接口多重继承**:对于接口类(纯虚函数类),多重继承是一种合理且常见的使用方式。 - **深入理解多重继承的工作原理**:掌握多重继承的底层实现机制,有助于更好地处理复杂情况。 #### 三、内部类机制及其应用...
1. 类与对象:C++同样使用类来定义对象,但与Java不同的是,C++允许类的私有成员在类外进行初始化,且提供了构造函数和析构函数,用于对象的初始化和清理工作。 2. 封装:C++通过成员访问控制(public, protected, ...
首先,C++本身并不直接支持像Java或C#那样的接口定义,但是我们可以通过抽象类(abstract class)来模拟接口的概念。一个抽象类包含至少一个纯虚函数,这使得它不能被实例化,而只能作为其他类的基类。下面是一个...
根据给定文件的信息,我们可以推断出这是一份关于迅雷公司在2008年实习生招聘中的面试题目集合,主要涉及C++和Java两大编程语言。尽管具体的面试题目没有给出,但我们可以根据C++和Java这两门语言的特点,以及通常在...
在C++中,抽象工厂通常通过接口(纯虚函数)来定义,这些接口代表了不同类型的工厂,每个工厂负责创建一类相关的产品。例如,我们可以有一个`IFactory`接口,包含创建产品A和产品B的纯虚方法。然后,针对具体的产品...
4. 多态性:C++通过虚函数和纯虚函数实现多态性,使得基类指针可以调用派生类的重写函数。 5. 模板:模板可以创建泛型函数和泛型类,提高代码的可复用性。 6. 异常处理:C++通过try、catch和throw关键字实现异常...
接口定义了一组纯虚函数(抽象方法),任何实现了该接口的类都必须提供这些方法的具体实现。这意味着在Java中,一个类可以实现多个接口,从而达到类似于多重继承的效果。 - **示例**:以下是一个简单的Java接口示例...
描述一下C++中的虚函数和纯虚函数的区别?如何在实际项目中应用软件测试策略? 在“面试题汇总”这个压缩包中,可能包含了上述各种知识点的具体题目和解答,是准备软件测试面试的宝贵资源。通过学习和解答这些题目...
例如,解释虚函数和纯虚函数的作用,以及如何实现多态性。 2. **内存管理**:掌握动态内存分配(new和delete)、栈与堆的区别,以及智能指针(如unique_ptr、shared_ptr)的使用。 3. **模板**:了解函数模板和类...
虽然C++标准库并不像Java的Swing那样提供丰富的GUI库,但中介模式同样适用于非GUI的系统,比如处理不同系统模块之间的通信。在C++中,中介模式可以通过定义一个类,该类维护了对各个相关对象的引用,负责接收和转发...