public class DogDog {
static String name;
public static void main(String[] args){
Dog dog1=new Dog();
dog1.bark();
dog1.name="Bart";
Dog[] myDogs=new Dog[4];
myDogs[0]=new Dog();
myDogs[1]=new Dog();
myDogs[2]=dog1;
myDogs[0].name="Fred";
myDogs[1].name="Marge";
System.out.print("Last dog's name is ");
System.out.println(myDogs[2].name);
int x=0;
while(x< myDogs.length){
myDogs[x].bark();
x=x+1;
}
}
public void bark(){
System.out.println(name+"says Ruff!");
}
}
输出结果为 last dog's name is Marge
为何不是
null says Ruff!
last dog's name is Bart!
Fred says Ruff!
Marge says Ruff!
Bart says Ruff!
小白问java初级问题,程序如下,
答案:2 悬赏:20 手机版
解决时间 2021-04-11 06:15
- 提问者网友:ミ烙印ゝ
- 2021-04-10 06:32
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-04-10 07:10
name前面有static修饰,是类变量。值是所有实例对象都共用的,修改时也是修改同时一个值。
所以name的值是最后一次赋值的结果,即myDogs[1].name="Marge"。
你可以去掉static再运行一次。
所以name的值是最后一次赋值的结果,即myDogs[1].name="Marge"。
你可以去掉static再运行一次。
全部回答
- 1楼网友:思契十里
- 2021-04-10 07:38
举例说明一下:
神仙,小鸟,飞机它们没有什么直接关系。相同的是它们都有“飞”的行为。
我们将飞这个行为提取为一个接口。 interface 接口名。这个接口里有一个未实现的方法 飞。
现在我们要让神仙,小鸟和飞机都来实现 接口里面“飞”的方法。
于是神仙可以飞,小鸟可以飞,飞机也可以飞。
在你的例子中,当你的程序实现“用新线程执行方法体”的接口时,在执行这个方法体时是多线程的(新开了一个线程)。
多线程并不神秘!!
仅仅因为你实现了“用新线程执行方法体”因此你的程序变得“多线程”,
仅仅因为你实现了“飞”的方法,因此神仙,小鸟,飞机都能飞!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯