类 A  有个无参构造 方法,在这个无参构造方法 中 用到了this类 B 继承 类A, 
在main方法中实例化一个 类B的对象,这个时候会调用A的无参构造方法吧?那这个时候的this 是代表 类B的吗?

解决方案 »

  1.   

    会调用。此时this可以理解为类型为A的引用,但指向的是B类对象。
      

  2.   

    http://blog.csdn.net/ZangXT/archive/2009/09/24/4587985.aspx
    以前写的点东西,可以大体对照一下。
      

  3.   


    public class Test {
    public static void main(String[] args) {
    B b = new B();

    System.out.println(b.value); }}
    class A{

    private int value;


    public A(){
    this.value=10;
    }
    }class B extends A{
    public int value;}我刚才测试了一下,B的value值是0,
    能不能让b的value值 变成10吗??
      

  4.   

    这样的 话 会报错啊   ,不存在super.value
      

  5.   

    首先谢谢你啊,但是 我是想完成这样的功能, 在 类A 的构造方法中用this, 在 new 一个类B的 实例 后 能通过 类A构造方法里的this代表 子类,来为这个对象 的某个属性 赋值,请问这样可以吗?
      

  6.   

    可以很垃圾的实现,实际编程不要用。public class Test {    public static void main(String[] args) {
            B b = new B();
            System.out.println(b.value);
        }
    }class A {
        private int value;
        public A() {
            this.value = 10;
            sub_init();//多态
        }
        public void sub_init() {
        }
    }class B extends A {
        public int value;
        public void sub_init() {
            this.value = 10;
        }
    }
      

  7.   

    如果用c++之类的可以直接操作内存的说不定可以试试。java就别想了
      

  8.   

    谢谢你的提醒啊,我想到一个办法,但是还差一点,你能帮我一下吗?
    public class Test {    public static void main(String[] args) {
            B b = new B();
            System.out.println(b.sub_init()); //这里报错
        }
    }class A implements M {
        private int value;
        public A() {
           
            this.sub_init();//多态
        }
        public void sub_init() {
         this.value=10;
        }
    }class B extends A {
        public int value;}
    interface M{
    public void sub_init();
    }
      

  9.   

    B继承A,B中拥有A中的方法,如果this. 属性在B中没有,就调用A中的属性,否则是B中的属性
      

  10.   


    this我刚才测试了一下,public class Test {    public static void main(String[] args) {
            B b = new B();
            System.out.println(b.value);
        }
    }class A {
    public int value;
        public A() {
        System.out.println(this.getClass());
          this.value = 10;
        }
        public void sub_init() {
        }
    }class B extends A {
        public int value;
        public void sub_init() {
            this.value = 10;
        }
    }
    打印出 class B
          0既然是代表b 那么就应该是 b.value=10啊。为什么不能改变了?对属性不起作用吗?不能覆盖属性吗?
    只能覆盖方法吗?
      

  11.   

    是的,属性以及static的东西本无多态之说。