public class Father{
int a=100;
public void miner(){
a--;
}
public static void main(String[] args){
Father x = new Father();
Son y = new Son();
System.out.println(y.a);
System.out.println( y.getA());
y.miner();
System.out.println(y.a);
System.out.println(y.getA());
}
}
class Son extends Father{
int a = 0;
public void plus(){
a++;
}
public int getA() {
return super.a;
}
}
答案:
0
100
0
99
请问这个程序最后输出的为什么是99?
答案:3 悬赏:70 手机版
解决时间 2021-02-09 00:25
- 提问者网友:爱了却不能说
- 2021-02-08 18:04
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-02-08 18:51
首先第一个输出是System.out.println(y.a);,输出son里面的a,是默认的0所以第一个输出0.
然后第二个输出是System.out.println( y.getA());,在son里面可知getA 是获得父类的a值(super.a 是指父类的a),父类的a默认是100,所以输出100.
接着y.miner();是通过子类y调用父类的函数·这时候通过miner函数会让父类的a-1=99.
第三个输出是System.out.println(y.a);输出的还是子类的a,就是默认的a=0,所以第三个输出0.
第四个输出是System.out.println(y.getA());因为上面调用了miner函数,父类的a-1=99了,所以通过getA获得的父类的a是99,所以输出为99
然后第二个输出是System.out.println( y.getA());,在son里面可知getA 是获得父类的a值(super.a 是指父类的a),父类的a默认是100,所以输出100.
接着y.miner();是通过子类y调用父类的函数·这时候通过miner函数会让父类的a-1=99.
第三个输出是System.out.println(y.a);输出的还是子类的a,就是默认的a=0,所以第三个输出0.
第四个输出是System.out.println(y.getA());因为上面调用了miner函数,父类的a-1=99了,所以通过getA获得的父类的a是99,所以输出为99
全部回答
- 1楼网友:深街酒徒
- 2021-02-08 20:42
super 就是Father的一个实例化对象。
调用y.miner();
的时候, 因为Son没有重载Father的miner();方法,所以实际上调用的就是Father的miner().
那么Father的a就=99了,
super.a 就是Father的a。。
提交回答
this.a 或则直接a 是 Son中的a
super.a 是 Father中的a
- 2楼网友:枭雄戏美人
- 2021-02-08 19:58
cup1=new cup(1);
cup2=new cup(2);构造函数时已初始化,
cup(int marker){ system.out.println("cup("+marker+")"); }
因此会输出cup(1),cup(2)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯