黑马程序员技术交流社区

标题: 关于private的问题,麻烦知道帮下忙 [打印本页]

作者: 只想要一盏灯    时间: 2013-10-8 19:53
标题: 关于private的问题,麻烦知道帮下忙
本帖最后由 杨增坤 于 2013-10-8 21:08 编辑

class Person
{
         private String name;
         private int age;

         public void setName(String name)
        {
                         this.name=name;
                         tell();
        }
        
        public void setAge(int age)
        {
                this.age=age;
                tell();
        }

        public int getAge()
        {
                return age;
        }


         public void tell()
        {
                System.out.println("name="+name+" ,age="+age);
        }
}

class PersonDemo
{
        public static void main(String[] args)
        {
                Person p = new Person();
                p.setName("zhangsan");
                p.getAge(23);
               
        }
}

现在这个代码,运行编译都是没有问题的,但是我想用getAge来实现这个年龄,我应该怎么做,我直接p.getAge 就出现了如下错误

QQ截图20131008195106.png (24.13 KB, 下载次数: 74)

QQ截图20131008195106.png

作者: winsking    时间: 2013-10-8 20:04
public void setAge(int age)
        {
                this.age=age;
                tell();
        }

        public int getAge()
        {
                return age;
        }

   p.getAge(23);  你这个括号中的23是神马呀,看看方法定义,是没有形参的,直接p.getAge()就行了,这是获取age的方法,返回一个int,不是设置age的方法
作者: 蔚蓝天色    时间: 2013-10-8 20:05
我说楼主,你的getAge中根本就没有参数,jvm找不到你要的那个getAge方法
作者: 喝龙血的我    时间: 2013-10-8 20:06
  p.getAge(23);这句话 怎么编译过去的》?  getAge()不用传入值吧
作者: 蔚蓝天色    时间: 2013-10-8 20:06
class PersonDemo
{
        public static void main(String[] args)
        {
                Person p = new Person();
                p.setName("zhangsan");
                p.getAge();
               
        }
}
这样才对嘛,要不你就使用重载
作者: 喝龙血的我    时间: 2013-10-8 20:08
应该是
  1. p.setAge(32);
  2. p.getAge();
复制代码

作者: 黑马戴帅军    时间: 2013-10-8 20:14
应该先set在get呀,set是向里面传值的,没有值是没法获取的。
Person p=new Person();
p.setName("zhangsan");
p.setAge(23);

p.tell();
作者: 只想要一盏灯    时间: 2013-10-8 20:50
喝龙血的我 发表于 2013-10-8 20:06
p.getAge(23);这句话 怎么编译过去的》?  getAge()不用传入值吧

这个编译是错误的,错误提示就是那张截图,我没说清楚呢,我意思是setAge是正确的
作者: 只想要一盏灯    时间: 2013-10-8 20:52
蔚蓝天色 发表于 2013-10-8 20:06
class PersonDemo
{
        public static void main(String[] args)

那这样的话,我的返回值就是默认的0了,有没有什么办法我可以用getAge得到我想要的年龄呢?
作者: 只想要一盏灯    时间: 2013-10-8 20:55
喝龙血的我 发表于 2013-10-8 20:08
应该是

这样的话,是不是那个p.getAge可以省略啊,第一步就可以得出我想要的结果了。可以直接用getAge得到我想要的数据吗?
作者: jìng╮煜    时间: 2013-10-8 21:27
你需要的不是你定义的函数,是一个未定义的重载函数.  里面要传入参数的.所以你这样是错误的.
还有,你年龄还没有传入呢.怎么获得????就算获得了也是错误的.
作者: 雪人    时间: 2013-10-9 00:06
getAge方法你也没写需要参数啊...
Person p = new Person();
p.setName("zhangsan");
//我想你的意思应该是设置age
p.setAge(23);
//然后再调用get方法获得
p.getAge();

如果你不调用setAge(int)方法,直接调用getAge()方法,那么返回的数据age=0,因为你木有给它赋值,它默认为0.






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