Java与C++的有关类继承、重载、多太主要区别是什么?
展开全部
1、重载:java 并没有像C++那样提供“运算符重载”功能,因此java里用“==”判断字符串相等不再实用(此时的“==”只是表示位置的相同, 虽然位置相同的字符串一定相同,但是值相同的字符串未必在同一位置),此时需要用方法equals(String str)。
Java不支持操作符重载。操作符重载被认为是C++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
2、继承
C++支持“多重继承”,这是C++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。
简单来说,引用一个知友说的:“C++可以多继承,java只能单继承。但是java通过可以实现多接口,来变相实现了多继承。”
3、多态性
一般在多态性上,都没什么区别,硬要找的话:
JAVA的多态性是通过:
1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的
2 父类和继承父类并覆盖父类中同一方法的几个不同子类实现的.
C++的多态性是:
多态性在C++中是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。
硬要找异同点,那太多了
Java不支持操作符重载。操作符重载被认为是C++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
2、继承
C++支持“多重继承”,这是C++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。
简单来说,引用一个知友说的:“C++可以多继承,java只能单继承。但是java通过可以实现多接口,来变相实现了多继承。”
3、多态性
一般在多态性上,都没什么区别,硬要找的话:
JAVA的多态性是通过:
1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的
2 父类和继承父类并覆盖父类中同一方法的几个不同子类实现的.
C++的多态性是:
多态性在C++中是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。
硬要找异同点,那太多了
展开全部
java在C++的基础上简化了很多,所以java在这方面的使用,没有多少需要注意的,主要是C++,
既然要学C++,那么C++一些在使用时的语法规则应该要好好弄清楚,那么就主要给你说说需要特别注意的一些地方。
1,重载:java按着重载规则使用就行了;然而C++有个常函数,所以即便有同参数列表的一般函数,它也是一种重载版本。
2,继承:C++可以多继承,如果父类之间有相同成员函数,那么子类对象在调用此函数时就会产生两义性,所以使用时就要加上成员名限定。java与C++一样,在创建子类对象时都会默认调用父类无参构造函数,如果要自己在子类构造函数里显示调用,它们有区别的,java可以直接在构造函数体里使用关键字super(**)调用,而C++显示调用父类构造函数时是在初始化列表里调用,即Son(**):Father(**){**}。
3,多态性:就是父类指针指向子类对象时体现。如果要重写父类函数,那么父类函数必须是虚函数(声明为virtual的函数),倘若不声明为虚函数,那么子类只是隐藏了父类同名函数包括父类的重载函数,此时父类的析构函数也应一并声明为虚析构函数,假如不这样,你在delete父类指针指向子类对象的指针时,系统只会析构掉父类的对象而不能正确的析构掉子类的对象。java的抽象类由abstract关键字定义;C++是将虚函数赋为0,即virtual void func(**)=0的形式,只要一个类里有这样的函数声明那么这个类就是抽象类。
既然要学C++,那么C++一些在使用时的语法规则应该要好好弄清楚,那么就主要给你说说需要特别注意的一些地方。
1,重载:java按着重载规则使用就行了;然而C++有个常函数,所以即便有同参数列表的一般函数,它也是一种重载版本。
2,继承:C++可以多继承,如果父类之间有相同成员函数,那么子类对象在调用此函数时就会产生两义性,所以使用时就要加上成员名限定。java与C++一样,在创建子类对象时都会默认调用父类无参构造函数,如果要自己在子类构造函数里显示调用,它们有区别的,java可以直接在构造函数体里使用关键字super(**)调用,而C++显示调用父类构造函数时是在初始化列表里调用,即Son(**):Father(**){**}。
3,多态性:就是父类指针指向子类对象时体现。如果要重写父类函数,那么父类函数必须是虚函数(声明为virtual的函数),倘若不声明为虚函数,那么子类只是隐藏了父类同名函数包括父类的重载函数,此时父类的析构函数也应一并声明为虚析构函数,假如不这样,你在delete父类指针指向子类对象的指针时,系统只会析构掉父类的对象而不能正确的析构掉子类的对象。java的抽象类由abstract关键字定义;C++是将虚函数赋为0,即virtual void func(**)=0的形式,只要一个类里有这样的函数声明那么这个类就是抽象类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询