定义一个父类
[code]
public class ParentClass {
public int i=1;
public String s=new String("string---parent");
public char[] ca={'j','a','r'};
void get(){
  System.out.println("i="+i);
  for(int i=0;i<3;i++){
    System.out.print(ca[i]);
  }
  System.out.println("(par-get)/n");
  System.out.println("this is parent class");
}
}
[/code]
定义一个子类
[code]
public class SubClass extends ParentClass {
  int i=2;
  String s=new String("string---sub");
  public char[] ca={'s','u','b'};
  float f=10.0f;
  void get(){
    System.out.println("this is subclass");
    System.out.println("i="+i);
    for(int i=0;i<3;i++){
      System.out.print(ca[i]);
    }
    System.out.print("(sub-get)\n");
  }
  void getF(){
    System.out.println(f);
  }}
[/code]
main方法
[code]
    ParentClass p=new SubClass();
    SubClass s=new SubClass();
    System.out.println("---Parent---");
    System.out.println(p.i);
    System.out.println(p.s);
    p.get();
    for(int i=0;i<3;i++){
      System.out.print(p.ca[i]);
    }
    System.out.print("\n");    System.out.println("---Sub---");
    System.out.println(s.i);
    System.out.println(s.s);
    s.get();
[/code]
结果
[code]
---Parent---
1
string---parent
this is subclass
i=2
sub(sub-get)
jar
---Sub---
2
string---sub
this is subclass
i=2
sub(sub-get)
[/code]
为什么直接在main方法里取i,s的值,与在get方法里取值是不同的?
一个取自父类,一个取自子类类的属性是存储在栈里还是堆里?

解决方案 »

  1.   

    定义一个父类public class ParentClass {
    public int i=1;
    public String s=new String("string---parent");
    public char[] ca={'j','a','r'};
    void get(){
      System.out.println("i="+i);
      for(int i=0;i<3;i++){
        System.out.print(ca[i]);
      }
      System.out.println("(par-get)/n");
      System.out.println("this is parent class");
    }
    }定义一个子类public class SubClass extends ParentClass {
      int i=2;
      String s=new String("string---sub");
      public char[] ca={'s','u','b'};
      float f=10.0f;
      void get(){
        System.out.println("this is subclass");
        System.out.println("i="+i);
        for(int i=0;i<3;i++){
          System.out.print(ca[i]);
        }
        System.out.print("(sub-get)\n");
      }
      void getF(){
        System.out.println(f);
      }}main方法    ParentClass p=new SubClass();
        SubClass s=new SubClass();
        System.out.println("---Parent---");
        System.out.println(p.i);
        System.out.println(p.s);
        p.get();
        for(int i=0;i<3;i++){
          System.out.print(p.ca[i]);
        }
        System.out.print("\n");    System.out.println("---Sub---");
        System.out.println(s.i);
        System.out.println(s.s);
        s.get();结果---Parent---
    1
    string---parent
    this is subclass
    i=2
    sub(sub-get)
    jar
    ---Sub---
    2
    string---sub
    this is subclass
    i=2
    sub(sub-get)为什么直接在main方法里取i,s的值,与在get方法里取值是不同的?
    一个取自父类,一个取自子类类的属性是存储在栈里还是堆里?
      

  2.   

    子类把父类方法被重构了吧,所以get方法都是子类的,跟存储在栈里还是堆里没什么关系吧?--我也不理解,个人想法!