java继承多态实例_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步

java中的多态是动态绑定的,也就是说在编译期不能确定一个方法的执行体是哪个方法(在继承中重写的方法)。执行果支委会根据在堆上分配的的引用去寻找方法体,所以产生你你所不想要的结果是正常的也是正确的。改法有三种:第一种: 在子类中不要重写PlaytoString()这个方法就行了。

这样子类的引用只能使用父类的PlaytoString()方法,就会打印出你想要的结果。如:class Round extends Shape { } //空的就行了第二种: 在子类中只写一句,super。PlaytoString()就行了。如:class Round extends Shape { void PlaytoString() { super。

PlaytoString(); } } 第三种:在方法中加一个标识参数bFlag,当bFlag为true时实现子类方法,为false时调用super。PlaytoString()如:class Shape { //在这是个伪参数,为了给子类一个相同的接口 void PlaytoString(boolean bFlag) { intln("Shape"); } } class Round extends Shape { void PlaytoString(boolean bFlag) { if(bFlage) super。

PlaytoString(); else intln("Round"); } }***********补充***********************第3种方法,父类和子类都采用void PlaytoString(boolean bFlag) 这个方法,没有那个无参的了。

因为java里所有的方法都是虚的,所以在执行时都是动态绑定的,目前也只有通过一个参数来确定人执行的父类的方法还是子类的。我建议你看一下Thinking in java这本书,里面有所讲解。当然,步痕旅游网想法:class Round1 extends Round{ void PlaytoString() { intln("Round1"); } } class Round2 extends Round{ void PlaytoString() { intln("Round2"); } } --------------------------------------------Shape manyRound[] = new Round[4]; manyRound[0] = new Round1(); manyRound[1] = new Round2(); for(int i=0; i < manyRound。

length; i ) { manyShape[i]。

PlaytoString(true); } ----------------------------------------------希望结果,"Round" "Round"实际结果, "Shape" "Shape" 。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值