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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左耳的鱼 中级黑马   /  2013-7-12 21:44  /  1125 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 左耳的鱼 于 2013-7-16 21:03 编辑

class Fu{
        int num = 4;
        Fu(){
                num = 5;
        }
}
class Zi extends Fu{
        int num = 6;
        public void method(){
                int num = 7;
                System.out.println(num);
        }
}

class Test{
        public static void main(String[] args) {
                Zi z = new Zi();
                z.method();//如果想输出6怎么改,如果想输出5怎么做,能否输出4?
        }
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

3 个回复

倒序浏览
  1. public class test {
  2.        
  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO 自动生成的方法存根
  8.                   Zi z = new Zi();
  9.           z.method();
  10.          
  11. }
  12. }
  13.         class Fu{
  14.         int num = 4;
  15.         Fu(){
  16.                 num = 5;
  17.         }
  18.         }

  19. class Zi extends Fu{
  20.         int num = 6;
  21.         public void method(){
  22.                 int num = 7;
  23.                 System.out.println(num);    //  7的情况
  24.                 System.out.println(this.num);    //6 的情况 ,本类的成员变量
  25.                 System.out.println(super.num);   //5的情况   , 父类的成员变量,因为局部num 与成员变量名字相同,所以num=5,实际上是this.num=5;
  26.         }

  27. }
复制代码
//this.num 的值都被改变了,你说怎样输出呢?除非你去掉那个你自己定义的构造函数,使用默认函数 System.out.println(super.num); 会输出4!
望采纳

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你要输出的num是method方法里的局部变量,并将7赋值给了该num,所以可以把该方法语句System.out.println(num);中的num改成this.num,将其变为Fu类的成员变量,再通过对象引用,给num赋一个你想输出值就好了.希望我的回答可以帮助到你!
  1. class Fu{
  2.         int num = 4;
  3.         Fu(){
  4.                 num = 5;
  5.         }
  6. }
  7. class Zi extends Fu{
  8.         int num = 6;
  9.         public void method(){
  10.                 int num = 7;
  11.                 System.out.println(this.num);
  12.         }
  13. }

  14. class Test{
  15.         public static void main(String[] args) {
  16.                 Zi z = new Zi();
  17.                                 z.num=1;//这里你想输出什么数字就赋值什么数字
  18.                 z.method();
  19.         }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
首先z.method();先输出7,因为内部有的话先不出去找,如果想打印5,则可以加上this访问当前对象,如果打印4,则可以尝试加上类名称.this.num
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马