class A{
public int a = 0;
void pa(){
System.out.println("a");
}
}
class B extends A{
}B继承A,那么B继承A里的a与父类的a是同一个变量吗
既然是继承下来,那么A里a的值应该是隐式传给B里的a吗?
public int a = 0;
void pa(){
System.out.println("a");
}
}
class B extends A{
}B继承A,那么B继承A里的a与父类的a是同一个变量吗
既然是继承下来,那么A里a的值应该是隐式传给B里的a吗?
解决方案 »
- BigInteger求50!的困惑
- 问一个有点“异想天开”的问题,关于程序抛出异常后自动运行的问题
- java程序中多个RMI调用的问题
- JAVA不是按值传递参数吗,引用不变,但是值内容变啊,为什么这个内容没有变啊。
- GUI程序与WEB程序的集成问题,jsp页面链接
- JTable高手,请务必要帮忙,人生太短暂!!!
- 工资应该如何算才有法律依据
- 为什么我在事务中加了一个select语句就报错了呢?望指教
- 对应Tomcat服务器的INITIAL_CONTEXT_FACTORY、PROVIDER_URL的值是多少?
- 我的泛型方法为何不支持int
- 用java怎么实现循环链表?
- 测试行业的薪水现状(择业新手必看)
如下面的例子:
class Father {
int x;
}class Children extends Father {
void cal() {
++x;
System.out.println("x of class Father: " + super.x);
System.out.println("x of children: " + x);
}
}public class test {
public static void main(String[] args) {
new Children().cal();
}
}
输出:
x of class Father: 1
x of children: 1
Press any key to continue...
这样明白了吧
B b=new B();
在堆栈在分配一小块区域 存放对象的引用b 它指向堆中为这个对象分配的一大块内存 而在这块内存中有一块存储的是父类中的成员变量
如下面的例子:
class Father {
int x;
} class Children extends Father {
void cal() {
++x;
System.out.println("x of class Father: " + super.x);
System.out.println("x of children: " + x);
}
} public class test {
public static void main(String[] args) {
new Children().cal();
}
}
输出:
x of class Father: 1
x of children: 1
class A
{
public int a = 0;
void pa()
{
System.out.println(a);
}
}class B extends A
{
void pa()
{
System.out.println(a);
a++;
super.pa();
}
}
如果用"new B().pa()"调用来查看运行结果,会打印出0和1.就是说,子类变化,父类也跟着变化了。如果是继承并覆写,则是另一种情况:
class C extends A
{
public int a;
void pa()
{
System.out.println(a);
a++;
super.pa();
}
}
C继承了A的变量a,但是覆写了它。这时候,A的a和C的a就不一样了。使用“new C().pa()”调用来查看运行结果,会打印出两个0.如果你对上面的分析还有怀疑,我们还可以找到一个有力的证据:用Eclipse或者Jbuilder的dbug来分析一下。它们能够跟踪到程序运行的内存使用情况。你会发现,纯粹的继承,B对象中只有一个a;但是带覆写的继承中,该对象维护的变量a有两个。
如果class Father {
int x;
} 中x为私有变量会是怎么?
也就是:
class Father {
private int x;
}
如果class Father {
int x;
} 中x为私有变量会是怎么?
也就是:
class Father {
private int x;
} 注意:在继承中,私有成员变量是不会被继承下来的,建议你看一下Think in Java这本书.
一定要搞清楚,继承的原则,重写,重载.
对你理解这个问题很有帮助.