下面是一个关于java多态的代码,我没看懂是什么意思,希望各位大神帮忙解答一下?

packagee;//10.6多态publicclassB{privateB[]b=newB[6];privateintc=0;publicvoida(Bargs){//... package e;
//10.6 多态
public class B {
private B[] b=new B[6];
private int c=0;
public void a(B args) { //定义a方法,参数类型为本类对象
if(c<b.length) {
b[c]=args;
System.out.println(c);
c++;
}
}
public static void main(String[] args) {
B b=new B();
b.a(new C());
b.a(new D());
//此处我知道是向上转型,我只是不知道输出结果中的1是哪来的
}
}
package e;

public class C extends B {
public C() {
System.out.println("123");
}
}
package e;

public class D extends B {
public D() {
System.out.println("321");
}
}

输出结果:
123
0
321
1
展开
 我来答
软件开发领路人
2020-07-14 · 解答软件开发新人的问题烦恼
软件开发领路人
采纳数:711 获赞数:408

向TA提问 私信TA
展开全部

你好,很高兴回答你的问题。

请看图中红线标识的位置,int变量c是调用方法的对象b的一个属性,在第一次执行b.a(new C())时,b对象的c变量已经执行c++变成了1了,在执行b.a(new D())时输出变量c时,自然就是1了。

如果有帮助到你,请点击采纳。

更多追问追答
追问
那0又是怎么输出的
追答
变量c开始时是0啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式