关于形参和实参值得传递问题

 class Animal {
public String name;
Animal (String name) {
this.name = name;
}
}
 class Dog extends Animal {
public String furColor;
Dog(String n,String c) {
super(n);
c = furColor;
}
}
public class Test {
public static void main(String args[]) {
Animal a = new Animal("name");

a = new Dog("bigyellow","yellow");
System.out.println(a.name);
Dog d1 = (Dog) a;
System.out.println(d1.furColor);
}
}

请问为啥这里我写c = furColor;  d1.furColor输出结果为null,  写成furColor=d1输出结果就是yellow呢?

月亮岛Superman
浏览 1456回答 2
2回答

四无小青年

这不是什么形参实参的问题,而是最基础的运算符的问题,java的赋值运算符“=”是把右边的值赋给左边,你这样写c = furColor; 就是把furColor的值赋给c,所以furColor的没有任何变化还是初始值null,furColor=d1这是把d1的值赋给furColor=d1,所以furColor的值是等于d1的若解惑,望采纳

qq_随心_57

你需要把语句修改为furColor=c;这样才是把通过形参把传入的实参给dog类中的变量赋值,才会输出yellow结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java