java转c/c++需知的基本概念
来源:互联网 发布:以色列 知乎一小时 编辑:程序博客网 时间:2024/06/05 18:40
很多同学是从Java语言进入编程世界的,但随着知识的增加与深入,逐渐认识到C/C++语言的重要性,所以很多比较有远见的程序员开始学习C/C++语言的开发。
从Java到C++,最重要的区别是面向对象的区别,C++的类可以多重继承,而Java只能有单一的父类,看起来Java像是个女儿国,而C++才是个真正的国度。当然Java也有Java的好处,那就是生活简单,像处女一样。
区别如下:
1.定义类
如下一个简单的Java类:
[code]
public class Array{private int length=0;public int getLength() {return length;}}
[/code]
在C++语言中的定义应该如下所示:
[code]
class Array{private:int length;public:Array(){length=0;}int getLength() const {return length;}};
[/code]
2.类的继承
我们执行一个操作,定义一个类A和一个类B,而类B继承自类A,在Java语言中应该这样写:
[code]
public class A{}public class B extends A{}
[/code]
在C++语言中应该这样写:
[code]
class A{};class B:public A{};
[/code]
3.方法重写
下面展示一个Java语言的方法重写过程:
[code]
public class A{public void sayHello(){System.out.println("A say : Hello World");}}public class B extends A{public void sayHello() {System.out.println("B say : Hello World");}}
[/code]
那么这个功能在C++语言中又该如何去写呢?我们先写一段程序,再分析,如下:
[code]
class A{public:void sayHello(){printf("A say : Hello World");}};class B:public A{public:void sayHello(){printf("B say : Hello World");}};
[/code]
这样去写看上去好像没有问题,这也是Java开发人员爱犯的一个错误,如果说她没有问题的话,我们写一段调用她的程序,就立即能够看出问题了,调用程序如下所示:
[code]
int main() {A* a = new B;a->sayHello();return 0;}
[/code]
运行一下,我们看看输出结果:
A say : Hello World
我们使用的对象明明就是B实例,为什么输出的仍然是A的输出信息呢,这是因为我们的sayHello方法是实函数,这种方法一旦定义,那么它就属于定义它的那个类,不会再改变了,是不能被重写的。如果想让程序在运行过程中自动查找sayHello方法的所属类,应该把这个方法定义为虚函数,则上述类的正确写法应该如下所示:
[code]
class A{public:virtual void sayHello(){printf("A say : Hello World");}virtual ~ A(){}};class B:public A{public:virtual void sayHello(){printf("B say : Hello World");}virtual ~B(){}};
[/code]
4.接口
在C++语言中没有接口的概念,但是可以用纯虚类来代替。如下所示:
[code]
class IPeople{public:virtual int getAge()=0;virtual string getName()=0;virtual ~IPeople(){}};class Man:public IPeople{public:Man(int age,string name){this->age=age;this->name=name;}virtual string getName(){return this->name;}virtual int getAge(){return this->age;}virtual ~Man(){}private:int age;string name;};int main() {Man* m= new Man(8,"xiao ming");cout<<m->getName()<<endl;return 0;}
[/code]
其中的IPeople类是一个纯虚类,其中只有纯虚函数,这样的类和接口的概念是一样的,继承者必须实现所有的纯虚函数。
- java转c/c++需知的基本概念
- C语言的基本概念
- C指针的基本概念
- C#基本概念
- c基本概念
- C基本概念
- C、C++的一些基本概念
- 【C语言】指针的基本概念
- C/C++中流的基本概念
- C语言指针的基本概念
- C/C++中流的基本概念
- c语言003---c语言的基本概念
- 【C/C++】面向对象的基本概念
- C++/C程序的基本概念(0)
- C语言:C语言的一些基本概念
- 学习C的一些基本概念(一)
- C/S 和 B/S 的基本概念
- c文件操作: (1)文件的基本概念
- Ubuntu下JNI的实现与调用
- 个人在GIS领域内取得成功的5大要素
- MyEclipse6.5安装flex插件
- Eclipse下修改SVN地址
- Teamcenter(Enterprise 2007) 开发之- 快速搭建开发环境(windows)
- java转c/c++需知的基本概念
- 【LGame入门学堂015.控件篇】简单控件之《小人跑跑》游戏实例
- 打开一个VC工程时默认为VC6.0
- “信息 资源 利用” 专题培训讲座
- mysql 授权root帐号可以远程访问,导入sql文件,登录mysql用root帐号,设置密码
- 为什么使用NoSQL
- Android 为程序添加桌面快捷方式
- asp.net中Excel导入sql server数据库
- 30分钟,让你成为一个更好的程序员