local变量被赋值了几次?# Java - 爪哇娇娃
q*u
1 楼
class X{ public int i=5; }
class Y extends X{ public int i=10; }
public class Test2{
public static void main(String[] args){
X x = new Y();
System.out.println("x.i = " + x.i );
}
}
答案是5,我在考虑, i的话在这里是不是赋值了2次,第一次在new Y(), 第二次在X x
=...的upcast这里出现。或者是i其实在这个X x = new Y()中,内存中有两个i? 我觉
得应该不是后者,因为X x的话,本身应该是reference, 个人猜应该是在upcast里面被
重新赋值成5.
还做了cpp的测试,
#ifndef STOCK_HPP_
#define STOCK_HPP_
class Stock{
public:
double price;
Stock();
};
class StockB : public Stock{
public:
class Y extends X{ public int i=10; }
public class Test2{
public static void main(String[] args){
X x = new Y();
System.out.println("x.i = " + x.i );
}
}
答案是5,我在考虑, i的话在这里是不是赋值了2次,第一次在new Y(), 第二次在X x
=...的upcast这里出现。或者是i其实在这个X x = new Y()中,内存中有两个i? 我觉
得应该不是后者,因为X x的话,本身应该是reference, 个人猜应该是在upcast里面被
重新赋值成5.
还做了cpp的测试,
#ifndef STOCK_HPP_
#define STOCK_HPP_
class Stock{
public:
double price;
Stock();
};
class StockB : public Stock{
public: