多态重写在c++和java中的一些区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了多态重写在c++和java中的一些区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1541字,纯文字阅读大概需要3分钟。
内容图文
本文主要讲述的是多态中重写在c++和java中的一些区别,主要是编译器方面的差异。
多态(重写)发生的条件是:(1)要有继承关系 (2)要有函数重写(在c++中必须是virtual重写,否则就是重定义,就是静态联编了。但是在java中是没有virtual这些关键字的,只要父子类函数名字完全相同就默认为就是相当于c++中的virtual重写) (3) 父类的指针或者引用指向子类对象。
代码如下,没有virtual重写时,是重定义的意思,就是静态联编。
#include <iostream>
using namespace std;
class Parent
{
public:
void getA()
{
cout << "我是父亲" << endl;
}
protected:
private:
int a;
};
class Child : public Parent
{
public:
void getA()
{
cout << "我是孩子" << endl;
}
protected:
private:
};
void main()
{
Child c1;
c1.getA(); //输出“我是孩子”
Parent* p = &c1;
p->getA(); //输出“我是父亲”
cout << "hello..." << endl;
system("pause");
return;
}
下面展示一段java的代码,在java中没有了很多c++方面的关键字,也没有了指针引用什么之类的符号,在父子类中函数名字相同就相当于是c++中的virtual重写,就可以发生多态了。
A.java
package day14;
public class A {
void printA()
{
System.out.println("我是父亲");
}
}
B.java
package day14;
public class B extends A {
void printA()
{
System.out.println("我是儿子");
}
}
Test.java
package day14;
public class Test {
void HowToTest(A parent) //相当于父类指针或者引用指向子类对象
{
parent.printA();
}
public static void main(String[] args) {
A b=new B();
Test test=new Test();
test.HowToTest(b); //输出我是孩子
}
}
具体看代码输入输出和注释就能看出c++和java在重写方面的区别,总而言之,c++比java更加繁琐,更加注重细节
tianguiyuyu 发布了228 篇原创文章 · 获赞 85 · 访问量 22万+ 私信 关注内容总结
以上是互联网集市为您收集整理的多态重写在c++和java中的一些区别全部内容,希望文章能够帮你解决多态重写在c++和java中的一些区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。