失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java编译时多态和运行时多态_运行时多态 编译时多态和重载 重写的关系(不区分Java

java编译时多态和运行时多态_运行时多态 编译时多态和重载 重写的关系(不区分Java

时间:2020-01-28 07:39:29

相关推荐

java编译时多态和运行时多态_运行时多态 编译时多态和重载 重写的关系(不区分Java

以前在大学学习OOP的时候,知道了重载和重写的区别,但如果要把他们和多态联系起来,我想很多新手朋友和我当初一样是死记的,可是时间长了,自然而然就忘记了,最近在写测试的时候,终于“开窍”了。在这里和大家分享一下。

重载和重写我就不解释了,大家都知道,我现在主要是让大家记住

重载是编译时多态,重写是运行时多态这句话。编译时可以理解为“编写”代码;运行时也就是代码执行。

好了,进入正题:

public void A15GetSubKeyList()

{

/*我们在方法里面定义了两个String的变量token和topicvoteid,在定义好后,编译器会检查所定义的变量是否 复合“要求”,在定义好token后,编译器检查=后面的,分号“;”之前的数据参数是否满足条件,这里的条件是值,如果定义的是string,那么他就必须是string类型的(也就是说必须有引号“”),否则就不会通过编译,比如这里的string topicvoteid = ;就会报错,通不过编译。

以上阶段大家可以粗浅的理解为“编译时”。等代码通过编译,开始运行了,就是“运行时”了。

*/string token = "";

string topicvoteid = ;

bool isChild = false;

string papernums = "1";

SubKeyList ret = _svr.GetSubKeyList(token, topicvoteid, isChild, papernums);

Assert.IsNotNull(ret, "执行失败");

}

回到正题,怎么把重载、重写和编译时、运行时联系起来呢?请继续往下看。

GetSubKeyList(token, topicvoteid, isChild, papernums)这个方法有4个参数,是重载的典型例子(可以再定义一个GetSubKeyList方法,无参数,即构成重载),当在编译器在编译时,自动检查参数类型,不符合的参数就报错。这样,我们就把重载和编译时联系起来了(除此之外,还有重载和编译时还有很多联系,这里只取最简单来解释)。

重写是子类对父类方法的“重新”定义,例如常见的“toString()”方法。编译时期只检查参数,不检查方法内部过程。只有当代码执行到具体的类别时,才会去调用该类“重写”的方法,所以,重写是运行时多态。

运行时多态、编译时多态和重载、重写的关系经常在面试中问道,但程度都不深,希望大家看了这篇博客后,结合自己写代码的量,做到真正理解多态。

java编译时多态和运行时多态_运行时多态 编译时多态和重载 重写的关系(不区分Java和C# 保证能看懂!)...

如果觉得《java编译时多态和运行时多态_运行时多态 编译时多态和重载 重写的关系(不区分Java》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。