A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

类代码:
  1. class C1{
  2.         int i = 6;
  3. }

  4. class C2 extends C1{
  5.         int i = 10;
  6. }
复制代码


如何获得父类中i的值
  1.         public static void main(String[] args) {       
  2.                 C2 c2 = new C2();
  3.                
  4.                 System.out.println(c2.i);//输出子类的i值,为10
  5.                 //如何获得父类中i的值
  6.                 System.out.println(?);
  7.         }
复制代码

14 个回复

倒序浏览
你可以使用多态的方式吖C1 c = new C2(); 这样c.i就是父类的属性了
回复 使用道具 举报
可能是这样:(C1)c2.i
回复 使用道具 举报
可以这样 System.out.println(super.i);
回复 使用道具 举报
用super关键字获取父类对象...
回复 使用道具 举报
shi980088 发表于 2014-5-25 08:47
你可以使用多态的方式吖C1 c = new C2(); 这样c.i就是父类的属性了

假如c已经被C2 c = new C2();定义了,那怎么获得C1的i;
如果是C1 c = new C2();那该怎么获得C2中的i值
回复 使用道具 举报
屈_zi 中级黑马 2014-5-25 09:26:55
7#
飘渺≮★耘 发表于 2014-5-25 09:02
可能是这样:(C1)c2.i

应该是((C1)c2).i
回复 使用道具 举报
屈_zi 中级黑马 2014-5-25 09:32:25
8#
飘渺≮★耘 发表于 2014-5-25 09:12
可以这样 System.out.println(super.i);

你的应该不行吧,哪一个对象都没指定
回复 使用道具 举报
一种使用多态,也可以使用super.变量名。
回复 使用道具 举报
class C1{

       int i = 6;
}




class C2 extends C1{

       int i = 10;
}



class Test {
         public static void main(String[] args) {        

               C2 c2 = new C2();

               

                System.out.println(c2.i);//输出子类的i值,为10

                //如何获得父类中i的值

               System.out.println(new C1().i);

       }

}
回复 使用道具 举报

  1. class C1
  2. {
  3.         int i = 6;
  4. }

  5. class C2 extends C1
  6. {
  7.         int i = 10;
  8. }
  9.       
  10. class C3               
  11. {       
  12.         public static void main(String[] args)
  13.         {        
  14.                 C1 c2 = new C2();
  15.                 //如何获得父类中i的值
  16.                 System.out.println(c2.i);//输出父类的i值,为6
  17.                
  18.                 C2 c = (C2)c2;
  19.                 System.out.println(c.i);//输出子类的i值,为10
  20.         }

  21. }
复制代码

是这意思不
回复 使用道具 举报

是的。。。
回复 使用道具 举报
额 这个方法就太多了。。。
回复 使用道具 举报
多态的方法比较常见吧    其他的也有  
回复 使用道具 举报
飘渺≮★耘 发表于 2014-5-25 09:12
可以这样 System.out.println(super.i);

这个super放在这里不太行哦,要想打印c1中的i,在楼主所给的主函数中不能这样使用。这句定义在c2中是对的,相当于c2子类调用父类c1的成员变量,super关键字要放在对应的子类里。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马