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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gump 中级黑马   /  2013-10-31 15:13  /  724 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Gump 于 2013-10-31 15:56 编辑

class Fu
{
        private int num = 4;
        public void setNum(int num)
        {
                this.num =num;
        }
        public int getNum()
        {
                return this.num;
        }
}

class Zi extends Fu
{
        //int num = 5;
        void show()
        {
                System.out.println(num);
        }
}

class  ExtendsDemo2
{
        public static void main(String[] args)
        {
                Zi z = new Zi();
                z.show();
                //System.out.println(z.num+"...."+z.num);
        }
}
报错:num可以在Fu中访问private   System.out.println(num);

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
你把Fu类中的num变成私有了 Zi类即使继承Fu也访问不到,而你又把Zi类中的num那行代码注释掉了 相当于你这里访问不到num变量了 那个报错的意思是你的num是私有的 你要访问它只能在Fu类里面访问 所以你要么把Fu类中的num的private去掉 要么不要把Zi类中的那行代码注释掉

评分

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

查看全部评分

回复 使用道具 举报
ixiangfeng 发表于 2013-10-31 15:20
你把Fu类中的num变成私有了 Zi类即使继承Fu也访问不到,而你又把Zi类中的num那行代码注释掉了 相当于你这里 ...

我如果想让打印结果为4.该怎么做呢?在Fu类 num是私有的情况下
回复 使用道具 举报
Gump 发表于 2013-10-31 15:28
我如果想让打印结果为4.该怎么做呢?在Fu类 num是私有的情况下

父类的变量是private的 子类是看不到的 要想访问父类中的私有成员可以通过父类中提供的公共方法
回复 使用道具 举报
ixiangfeng 发表于 2013-10-31 15:37
父类的变量是private的 子类是看不到的 要想访问父类中的私有成员可以通过父类中提供的公共方法 ...

可以帮我修改下父类么,我看和我修改后的一致否,谢谢了
回复 使用道具 举报
本帖最后由 kellyzyb 于 2013-10-31 15:48 编辑
  1. class Fu
  2. {
  3.         private int num = 4;
  4.         public void setNum(int num)
  5.         {
  6.                 this.num =num;
  7.         }
  8.         public int getNum()
  9.         {
  10.                 return this.num;
  11.         }
  12. }

  13. class Zi extends Fu
  14. {
  15.         //int num = 5;
  16.         void show()
  17.         {
  18.                  int num =getNum(); //增加的代码,通过getNum方法获取父类num的值。
  19.                 System.out.println(num);
  20.                
  21.         }
  22. }

  23. class  ExtendsDemo2
  24. {
  25.         public static void main(String[] args)
  26.         {
  27.                 Zi z = new Zi();
  28.                 z.show();
  29.                 //System.out.println(z.num+"...."+z.num);
  30.         }
  31. }
复制代码
在代码上帮你做了修改。程序主要问题:父类将num私有化,子类是无法继承的。而且子类没有定义过变量num 所是会报错的。不过你父类定交了getnum的方法,可以通过这个方法获取num值。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Gump 中级黑马 2013-10-31 15:48:21
7#
kellyzyb 发表于 2013-10-31 15:47
在代码上帮你做了修改。程序主要问题:父类将num私有化,子类是无法继承的。而且子类没有定义过变量num 所 ...

thank you ,初学,总是学了后面忘了前面的,谢谢了
回复 使用道具 举报
Gump 发表于 2013-10-31 15:45
可以帮我修改下父类么,我看和我修改后的一致否,谢谢了

我不知道你的具体需求啊 你的父类的num是私有的 而子类又没有定义num 所以子类的show()方法中的num是JVM不识别的 要么不要num 要么在子类中定义一个num 仅仅只是打印出一个4是很简单的 关键是你是怎样想的 你想在什么前提下把它打印出来
回复 使用道具 举报
如果问题已经解决,请重新分类帖子为“提问结束”
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
子类中变量注释掉后,子类中继承了父类中的变量。
但父类中的变量私有化,即封装。封装是将类中的属性和实现细节隐藏,只提供对外访问方式。
所以如果子类中要访问父类中的num变量,即调用父类中提供的访问方式getNum()方法即可获得父类中的同名变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马