class a
{
   int i=0;
  }
class b extends a
{
   int i=1;
 }
如上两个类,我问一下。
b是不是可以继承a中的i?
还问一下,两个类中都有i,这个叫什么啊?覆写?重载?

解决方案 »

  1.   

    那可以说,类b继承了a中的i吗?这个说法对吗?两个类中的i有什么关系呢?
      

  2.   

    那可以说,类b继承了a中的i吗?这个说法对吗? 两个类中的i有什么关系呢?
      

  3.   

    A类中的i和B类中的i没有关系,不是覆盖也不是重载。
    A类中的i是A类中的i,B类中的i是B类中的i,他俩原先没有任何关系。
    当B类继承了A类后,他俩还是没有任何关系。只不过在B类中可以引用A类(父类)中的i罢了。
    -------------------------------------------------------------------------------
    public class A {    int i = 6;
    }
    ---------------------------------------------------------------------------------
    public class B extends A {    int i = 5;    int a = 0;    B() {        a = super.i;
        }    public static void main(String[] args) {        B b = new B();        System.out.println("我是A类的i: " + b.a);        System.out.println("我是B类的i: " + b.i);
        }
    }
    ------------------------------------------------------------------------------------------------------
      

  4.   

    子类可以继承父类的非私有数据和方法,如果要引用父类的数据和方法的话,可以用super,但这既不是覆盖也不是重载,如果你把他们理解成两个变量的话会更好一些
      

  5.   

    答:子类B的i将父类对象中的i给隐藏了。这时,B的对象中含有两个i。若类B与类A在同一个包中,则类B中访问自己的i,可使用:this.i或i,若使用自己空间中包含的那个父类对象中的i时,使用:super.i。
    另外:隐藏的另一个情况是:static 类型的方法。
      

  6.   

    答:B能不能“继承”父类中的i,要看子类B能不能访问父类对象中的这个i,若能访问,则称为“被继承”下来了。若不能访问,则被称为“没有被继承”下来。
      

  7.   

    那可以说,类b继承了a中的i吗?这个说法对吗? 
    不对. 属性是类作为一种对象规范的描叙.类既然是一种模板那么属性就是这个模板的结构.
      

  8.   

    答:“继承”这个术语的真正含义是什么?当我们讲继承时,代表的是什么意思?
    贴中http://topic.csdn.net/u/20080419/15/5a1339a9-8af3-4fe3-ac30-f7f6e379d88f.html
    有这个问题的讨论。
    如:父类中的private void f1()方法,子类是不能继承的(但要注意:子类对象中包含有一份完整的父亲对象)。这就是整个事件的理解。
      

  9.   

    <font color=blue>
    属性没有继承和重载的说法!
    </font>
      

  10.   

    答:属性与类的数据成员是两个不同的术语。我不知道,你所讲的“属性”是不是按“bean”中的属性解释,还是按通常的面向对象中讲的属性(这个属性与数据成员有些书上往往是“同义语”)。我们讨论的是“数据成员i”能不能被继承。你的看法呢?大家交流看法吧。
      

  11.   

    class B 中的i既不是覆盖也不是重写,因为以上两个名词都是针对方法的。
    我理解i是可被继承的,但子类i在此屏蔽父类i,故子类中要用super.i调用父类i。
      

  12.   

    什么都不叫,属性是静态绑定的。
    如果子类调用i,如果他没有i则调用父类中的i。
      

  13.   

    class b 中的i既不是覆盖也不是重写,a中的i会被继承,但是如果你输出System.out.println(i);其结果会是1,是因为b 中的int i把a 中的给遮蔽了,注意,,但是没有改变a中的i。就叫遮蔽,不是重载,因为那是针对方法的。
    给分吧
      

  14.   

    他们没什么关系 只不过在调用的时候用的关键字不一样 在子类调用父类的用super 子类自己的用this
      

  15.   

    一言盖之!
    new b()的对象使用的是b中的i
    如果想用a中的i在b中定义一个方法用super.i访问
      

  16.   

    "class b extends a"这句话知是说“b”是“a”的子类,相反 “a”是“b”的父类;b实现a中的方法,也重写a中的方法。
    但是就本题而言,"int i"只不过是定义了一个变量,不是什么方法,所以他们是没有直接关系的。
    如果把你的程序修改成:
    class a 

       void a(){
          }
      } 
    class b extends a 

       void a(){
       }
     } 
    这时候就有关系了
      

  17.   

    "class b extends a"这句话知是说“b”是“a”的子类,相反 “a”是“b”的父类;b实现a中的方法,也重写a中的方法。
    但是就本题而言,"int i"只不过是定义了一个变量,不是什么方法,所以他们是没有直接关系的。
    如果把你的程序修改成:
    class a 

       void a(){
          }
      } 
    class b extends a 

       void a(){
       }
     } 
    这时候就有关系了
      

  18.   

    [Quote=引用 9 楼 KAKUKYOWU 的回复:]
    A类中的i和B类中的i没有关系,不是覆盖也不是重载。 
    A类中的i是A类中的i,B类中的i是B类中的i,他俩原先没有任何关系。 
    当B类继承了A类后,他俩还是没有任何关系。只不过在B类中可以引用A类(父类)中的i罢了。 
    ------------------------------------------------------------------------------- 
    public class A {     int i = 6; 

    ------------------------------------------------------------------------…
    [/Qoute]
    同意,两者没有任何关系!9楼的程序可以说明!!
      

  19.   

    他们两个没有什么关系,只不过是巧合名字相同而已,如果你修改成"i"和"o"就一目了然了。
    因为这两个只是变量,所以不存重写的问题
    但是如果是方法的话,搂主就需要好好看了
    如果程序改成
    class a 

      void a(){
       }
      } 
    class b extends a 

      void a(){
      }
     }
    那么在这种情况下就是重写的问题了
    呵呵呵
    希望搂主早日解决这些概念问题