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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-13 12:39  /  1829 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-14 01:30 编辑

public  class  Father{
   int i=20;

}
public class Son extends Father{
   public static void main(String args[]){
   int i=10;
    Son s= new Son();
System.out.println(s.i);  //结果是什么     为什么

  }

}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
你这样写会报错。因为s.i调用的是Son子类的成员变量i,可是你没有成员变量,只有在main函数中的局部变量。
局部变量可以直接输出:System.out.println(i);
如果你创建了子类的成员变量,如
public class Son extends Father{
    int i = 20;
    public static void main(String args[]){
    int i=10;
     Son s= new Son();
System.out.println(s.i);   //输出结果就是20.

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
首先,如楼上所说的,你子类里面没有定义成员变量。
如果你要在main方法里使用到父类的i的话,可以用父类引用指向子类对象的方法去调用父类的变量i.
Father f=new Son();
System.out.println(f.i);

但是这样的话,父类的引用就只可以调用子类重写的方法。


评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
这个是有两个公共类的问题吗
回复 使用道具 举报
这个是有两个公共类的问题吗
回复 使用道具 举报
在继承中,可以重写方法不能重写变量,如果子类和父类定义相同类型的变量,就会报错。
回复 使用道具 举报
楼主自己写的代码可能没法完全表达自己的意思,我这里自己修改一下应该够更好解释。看下面的代码,三个类中都有num属性。
  1. class Fu
  2. {
  3.         int num=10;
  4. }
  5. class Zi extends Fu
  6. {
  7.         int num=5;
  8. }
  9. class Demo extends Fu
  10. {
  11.         int num=55;
  12.         public static void main(String[] args)
  13.         {
  14.                 Zi x=new Zi();                          //子类引用
  15.                 System.out.println(x.num);                       //结果是5
  16.                 Fu y=new Zi();                         //父类引用
  17.                 System.out.println(y.num);                     //结果是10
  18.                 Demo c=new Demo();            //子类引用
  19.                 System.out.println(c.num);                      //结果是55
  20.                 Fu d=new Demo();                //父类引用
  21.                 System.out.println(d.num);                     //结果是10
  22.         }
  23.        

  24. }
复制代码
运行的结果是
5
10
55
10
很明显可以看出结果只和所引用的类有关。当对象引用父类时,对象num属性值为父类的,当对象引用子类时,对象num属性值为子类的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马