public class Test {
public static void main(String args[]) {
B bobj=new B(5);
System.out.println(bobj.i);
System.out.println(bobj.j);
}
}
class A{
int i=6;
public A() {
this(10);
}
public A(int j) {
i=j;
}
}
class B extends A{
int j;
public B(int j) {
this.j=j;
}
}
通过我对代码的理解输出应该是10/5当然具体需要运行一下。
想问一下你是怎么理解的?
@'君の名は':等我一下,我似乎理解错了,
应该是5和5因为B继承A,在方法B里没有进行重写根据传参规则,J等于5,继承A所以根据A的传参i等于5
我是C#的继承写法不一样,没看懂那个单词,所以第一次或许猜想主意。@'君の名は':
@余士杰: 结果我运行过了是10和5,但我不知道怎么去理解
@'君の名は':不可能吧。等我一下,
@'君の名は':你用过断点一行一行运行过没?运行一下,看它走的路线你就懂了。类A进行了自我调用,B直接进行了传参。
@余士杰: 怎么用断点看它走的路线啊?不太会这种方法
@'君の名は':在入口实例化B的地方大一个断点,一般右键有断点两个字,然后点击运行,或调试
@余士杰: 嗯,谢谢你,我再看看有没有好一些的理解方法
@'君の名は':@'君の名は': 再直接一点儿,你看一下继承的意思,然后多谢几种继承,运行,只是看代码,不动手是很难理解的。另外你只个实例化只是进行了继承A,并没有通过A做什么事,所以A的标准输出就是10,但是调用了B,并且赋值给了B中的J所以,就是5
@'君の名は':而且也没有调用构造方法,非静态方法,静态方法,不同的方法体的调用是不同的。