下面是在百度上找的有一个例子的解释,看完之后还是不明白定义一个接口和直接把方法写在类里有什么区别,当鸟飞这个接口的方式变了过后(比如说不用翅膀也不用火箭了突然想起用飞机了),不是还是依然要到实现它的具体类里面改变飞的方法么!!!还有就是原来接口如果定义了用翅膀和火箭飞,那么在鸟这个类里就有2种方法来实现这两种飞行方式(那和在原本的鸟类里添加翅膀飞和火箭飞不定义飞这个接口不是没什么区别了吗?)
接口 即规范 你定义好接口 由他人实现。在java中还能实现多重继承一种实现方式
是这样 如果你在类里定义方法实现某一个功能, 但是之后这个功能的实现方式改了,那么你就只能修改这个类,这样不利于 方法的复用和维护
那么你要是 通过一个接口实现 当这个方法是实现方式改了 只需实现这个借口重新写一个类 不影响其他实现即可
用代码说明就是
写了一个 鸟的类 鸟具有一个方法 是用翅膀飞 你把这个方法 在 鸟这个类中实现 但是 现在 需求改了 要鸟用火箭飞 那么你就要该 鸟的类 改完后 需求又改了说 用火箭飞造价太高 还是用翅膀飞吧 那么你就需要在改回 之前的方法
如果 你用接口 那么 鸟这个类 只需实现以个叫 飞的接口 而这个 接口 有两个实现 一个 是翅膀飞 一个是 火箭飞 那么 不管你的需求怎样改变 你需要修改的只是 一个实现飞的语句 即可
C++中的虚函数和JAVA中的抽象方法有什么区别?
纯虚函数的实现可以在类声明外进行定义。5. C++中一般都是把析构函数声明为虚函数。因为虚函数可以实现动态绑定,也就是到底调用哪个函数是根据指针当前指向哪个对象来确定的,不是根据指针的类型来确定。如果C++中不把析构函数声明为虚函数,那么其有个子类,重写了虚函数,那么当父类指针指向一个子类...
赋值操作符设为纯虚函数(c++)
一、protected声明的成员在子类中是私有的继承的,不能访问。二、很简单啊,因为compare& operator=(const compare& rhs)访问的是自己类得成成员函数当然不会有很么问题啦。可是第一个确实访问的是父类的东西,因此不对。三、负值重载函数可以设为纯虚函数。纯虚函数最终的目的是只为提供统一的接口以...
C++里的struct和class的区别到底是什么?我在网上查到的是:除了他们的默...
(1)都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数;(2)都可以有一大堆public\/private\/protected修饰符在里边;(3)虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:A a = {1, 2, 3};不管A是个s...
java 中的语法到底指的什么?
C++支持inline函数,可以避免函数的堆栈调用,提高运行效率 Java无这种语义 C++中,构造函数的初始化列表是这样使用的:首先按继承顺序调用基类的构造函数构造基类对象,然后按声明顺序调用成员对象的构造函数构造成员对象,最后对列表中出现的成员变量做初始化 Java不采用初始化列表这种构造机制 它们的构造顺序基...
虚函数 纯虚函数是一个东西吗?
虚函数和纯虚函数 在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念。因为它充分体现了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广。比如在微软的MFC类库中,你会发现很多函数都有virtual关键字,也就是说,它们都是虚函数。难怪有人甚至称虚函数是C++语言的精髓。 那么,什么...
JAVA的作用(java的作用与发展)
Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的...
请高人进.JAVA的问题
Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。
C++使用虚函数的时候,子类也要使用virtual关键字吗
c++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此,在子类重新声明该虚函数时,可以加,也可以不加,但习惯上每一层声明函数时都加virtual,使程序更加清晰。 本回答由网友推荐 举报| 答案纠错 | 评论 45 0 pretty星空 采纳率:50% 擅长: C\/C++ 高考 院校信息 数学 ...
一个c++虚函数与this指针的问题
之所以啰嗦这么多,意思就是让你明白(如果你被上面所述搞得一头雾水),从程序实际运行的角度上看,this指针与其说是C++的指针,还不如说是编译技术里的东西,汇编\/机器语言里根本没有类型一说(当然,机器最多分整数运行储存单元和浮点数运算储存单元),自然不存在什么类型转换了。
驳狗屎文 "我为什么放弃Go语言
其中有一些,是大家集体性的很容易就中招的错误(Go语言里的例子我暂时想不起来,C++里的例子有“基类析构函数不是虚函数”)。这时候编译器应该站出来,多做一些检查、约束、核对性工作,尽量阻止常规错误的发生,尽量不让有潜在错误的代码编译通过,必要时给出一些警告或提示,让程序员留意。编译器不就是机器么,不就是...