I**A 发帖数: 2345 | 1 你们谁能解释一下为什么结果是Sub1 2? 多谢!
这个println到底是怎么 exactly being executed? |
w********r 发帖数: 14958 | |
g**e 发帖数: 6127 | 3 先组合字符串,ga.i + " " + ga.getI(),getI()调用的时候就打印了"Sub",然后得
到组合字符串"1 2",然后才是main里面的打印输出。
最后结果就是"Sub1 2"
【在 I**A 的大作中提到】 : 你们谁能解释一下为什么结果是Sub1 2? 多谢! : 这个println到底是怎么 exactly being executed?
|
r*d 发帖数: 896 | 4 在System.out.print(ga.i+" " + ga.getI());运行的时候先evaluate ga.getI();
变成System.out.print(ga.i + " " + returnValueOfGetI);
在evaluate getI的时候打印Sub.
执行System.out.print(ga.i + " " + returnValueOfGetI);
的时候打印1 2.
打印1是因为member variable是不会被继承覆盖的。然后父类的variable先被打印吧(
这个是猜测的)
getI()返回2是因为是Polymorphism机制,可以得到正确的object reference.
【在 I**A 的大作中提到】 : 你们谁能解释一下为什么结果是Sub1 2? 多谢! : 这个println到底是怎么 exactly being executed?
|
I**A 发帖数: 2345 | 5 多谢你和楼上那位
【在 r*d 的大作中提到】 : 在System.out.print(ga.i+" " + ga.getI());运行的时候先evaluate ga.getI(); : 变成System.out.print(ga.i + " " + returnValueOfGetI); : 在evaluate getI的时候打印Sub. : 执行System.out.print(ga.i + " " + returnValueOfGetI); : 的时候打印1 2. : 打印1是因为member variable是不会被继承覆盖的。然后父类的variable先被打印吧( : 这个是猜测的) : getI()返回2是因为是Polymorphism机制,可以得到正确的object reference.
|
l******4 发帖数: 729 | 6 我有些糊涂了
Arabic到底有多少内存? 下面那个正确?
1,他有2个i,外加一个动态练编表 = 12bytes
2,他有2个i,没有动态练编表 =8 bytes
3,他有1个i,外加一个动态练编表 =8 bytes
如果Arabic有2个i, 我想访问每个i,分别应当怎么写?
我对JAVA不熟,但是在C++里面,没有virtual就不会动态练编。
【在 r*d 的大作中提到】 : 在System.out.print(ga.i+" " + ga.getI());运行的时候先evaluate ga.getI(); : 变成System.out.print(ga.i + " " + returnValueOfGetI); : 在evaluate getI的时候打印Sub. : 执行System.out.print(ga.i + " " + returnValueOfGetI); : 的时候打印1 2. : 打印1是因为member variable是不会被继承覆盖的。然后父类的variable先被打印吧( : 这个是猜测的) : getI()返回2是因为是Polymorphism机制,可以得到正确的object reference.
|
g**e 发帖数: 6127 | 7 System.out.println(ga.i);
System.out.println(((Arabik)ga).i);
member variable in java uses static binding, while method uses dynamic
binding, that's how polymorphism works.
【在 l******4 的大作中提到】 : 我有些糊涂了 : Arabic到底有多少内存? 下面那个正确? : 1,他有2个i,外加一个动态练编表 = 12bytes : 2,他有2个i,没有动态练编表 =8 bytes : 3,他有1个i,外加一个动态练编表 =8 bytes : 如果Arabic有2个i, 我想访问每个i,分别应当怎么写? : 我对JAVA不熟,但是在C++里面,没有virtual就不会动态练编。
|
l******4 发帖数: 729 | 8 这么说Arabik应该有12个字节内存。
谢拉
【在 g**e 的大作中提到】 : System.out.println(ga.i); : System.out.println(((Arabik)ga).i); : member variable in java uses static binding, while method uses dynamic : binding, that's how polymorphism works.
|
u*e 发帖数: 965 | |
g**e 发帖数: 6127 | 10 没。但是面试需要。
那些算法题对开发有多大帮助?
【在 u*e 的大作中提到】 : 有这么玩JAVA的吗?对开发有帮助吗?
|