public class Base {
int x;
Base()
{
x=5;
}
public void show()
{
System.out.println(x);
}}
public class Sub extends Base {
Sub()
{
x=9;
}}public class Test {
public static void main(String[] args) {
Sub sub =new Sub();
Base base =new Base();
base.show();
sub.show();
为什么不是5,5啊
int x;
Base()
{
x=5;
}
public void show()
{
System.out.println(x);
}}
public class Sub extends Base {
Sub()
{
x=9;
}}public class Test {
public static void main(String[] args) {
Sub sub =new Sub();
Base base =new Base();
base.show();
sub.show();
为什么不是5,5啊
Base base =new Base();
base中有一个地方开辟了内存,仅为base
x为原始值,x=5Sub sub =new Sub();
sub的内应有两地方开辟了内存,一个为base(父类),一个为sub(父类的扩展)
中,你将x设为了9,那么父类(base)中的x已经改变,sub.show()输出为9。
因为你的两个new分别声明了两个对象,占用两个完全不同的内存。base对象占用一个空间。
sub占用一个空间。(sub中包含一个base,却与上面的base在不同的内存地址中)