黑马程序员技术交流社区

标题: 继承问题 [打印本页]

作者: 左耳的鱼    时间: 2013-7-12 21:44
标题: 继承问题
本帖最后由 左耳的鱼 于 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?
        }
}
作者: 在乎..    时间: 2013-7-12 22:04
  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!
望采纳
作者: 闲人忙啊    时间: 2013-7-13 22:21
你要输出的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. }
复制代码

作者: Alice_☆_晓柒    时间: 2013-7-14 21:49
首先z.method();先输出7,因为内部有的话先不出去找,如果想打印5,则可以加上this访问当前对象,如果打印4,则可以尝试加上类名称.this.num




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2