笔记1——C++多态与Java多态的异同

来源:互联网 发布:mac 照片 相簿 文件夹 编辑:程序博客网 时间:2024/05/23 11:40

最近参加网易笔试遇到一个问题,考察了C++ 多态特性,自己查了相关资料学习了相关用法。

一般程序调用的函数地址是在编译期决定了,但是具有多态特性的函数调用地址是在程序运行期才决定。

C++与Java多态的区别

  • 子类重写父类的函数,程序运行时根据不同对象执行相应函数

  • C++中子类只有重写父类的virtual函数时,此函数才具备多态特性


来两个简单列子说明:

C++

#include <iostream>class A{    public:        virtual void f(){            std::cout << "A " << std::endl;        }        void f1(){            std::cout << "A1 " << std::endl;        }       };class B : public A{    public:        void f(){            std::cout << "B " << std::endl;        }        void f1(){            std::cout << "B1 " << std::endl;        }           };int main(int argc, char *argv[]){    //多态特性的考察    A *pa = new A();    pa->f();    B *pb = (B *)pa;    pb->f();    delete pa,pb;    pa = new B();    pa->f();    pb = (B *)pa;    pb->f();    //非多态特性的考察    pa = new A();    pa->f1();    pb = (B *)pa;    pb->f1();    delete pa,pb;    pa = new B();    pa->f1();    pb = (B *)pa;    pb->f1();    return 0;}

程序结果

  • A A B B
  • A1 B1 A1 B1

多态性的考察中,第一个父类指针pa指向了父类对象A,故调用了父类对象A中的方法;第二个虽说将父类对象强制转换成了子类对象,但实际上子类指针指向的仍是父类对象;第三个父类指针指向了子类对象B,故调用子类对象B中的方法;第四个子类指针指向的仍然是子类对象B,故调用了子类对象B中的方法。

非多态性的考察中,主要看编译时指针是哪种类型的指针,故调用的就是相应类型的方法。

Java

class A{    public void f(){            System.out.println("A");    }}class B extends A{    public void f(){            System.out.println("B");    }}public class Test{    public static void main(String[] args){        A a = new A();        a.f();        a = new B();        a.f();    }}

程序结果:A B

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚生小狗不吃奶怎么办 刚出生的小羊不吃奶怎么办 羔羊走路不稳不吃奶怎么办 新生儿喝奶老是呛到怎么办 宝宝吃母乳呛到怎么办 宝宝一直睡觉不吃奶怎么办 3个月婴儿不吃奶怎么办 新生婴儿晚上不睡觉怎么办 宝宝肚子胀不吃奶怎么办 宝宝25天不睡觉怎么办 50天婴儿不吃奶怎么办 儿子关在房间玩电脑怎么办? 宽带拨号上网账号密码忘了怎么办 双眼皮割的太宽怎么办 营业执照异常名录移除注销怎么办 工商局注册后骚扰电话怎么办 单位工作失误医保断交7年怎么办 大门对大门怎么办?巧用天官赐福 委托书公司名称打错了怎么办 招行ubank不对账怎么办 信贷公司利息高不合理怎么办 衣服上的logo掉怎么办 ui设计师接不到私活怎么办 微信打开很慢怎么办 小泰迪感冒加身上结痂怎么办 法斗眼睛肿了怎么办 地图鱼身上有白点怎么办 人被广告牌砸了怎么办 小米手机出现繁体中文英文怎么办 雅思考试把姓名写错了怎么办 房贷的流水账假怎么办 报到证报道期限过期了怎么办 注销公司公章丢了怎么办 家里的猫太调皮怎么办 孩子纹身了我该怎么办 46天婴儿感冒了怎么办 狗病了不吃东西怎么办 幼儿急诊见风了怎么办 哺乳期乳房有硬块而且疼怎么办 哺乳期乳头破裂乳房似针扎怎么办 回奶胀痛的厉害怎么办