黑马程序员技术交流社区

标题: 关于面向对象的问题提问。 [打印本页]

作者: 探花    时间: 2014-4-4 17:15
标题: 关于面向对象的问题提问。
本帖最后由 探花 于 2014-4-7 16:53 编辑

请高手看一下代码,很简单对一个私有成员的赋值
  1. package com.itcase;

  2. public class Test1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 Person p = new Person ();
  8.                 p.setAge(20);
  9.                 p.speak();
  10.         }
  11. }
  12.         class Person {
  13.                 private int age;

  14.                 public int getAge() {
  15.                         return age;
  16.                 }

  17.                 public void setAge(int age) {
  18.                         this.age = age;
  19.                 }
  20.                 void speak() {
  21.                         System.out.println("age="+age);
  22.                 }
  23.         }
复制代码
里面有 两个方法,一个是setAge ,一个是getAge,
可是在主函数的地方,是调用的setAge怎么会能返回数值那,
不是应该调用getAge 吗?请高手给解释一下

作者: 残梦共飞雪    时间: 2014-4-4 17:20
你的主函数调用了
  1. void speak() {
  2.                         System.out.println("age="+age);
  3.                 }
复制代码


p.setAge(20); 没有返回内容。
作者: 刘一博    时间: 2014-4-4 17:34
p.setAge(20);
这没有返回值,这是进行封装,
public void setAge(int age) {  //传入age为20,无返回值
        this.age = age; //将20赋值给p对象的age
}
作者: ╰青青子佩ˊゝ    时间: 2014-4-4 18:47
你类中的speak()方法不就已经能打印出age了嘛?你的getAge()和speak功能是一样的。
void speak() {
                        System.out.println("age="+age);
                }
作者: 请备注    时间: 2014-4-4 18:53
执行结果:age=20
是p.speak()  语句输出的。
public int getAge()
{ return age;
   //System.out.println("age="+age);
}
该语句没有执行 你用注释里 的语句试一下就知道了
作者: lgqioi    时间: 2014-4-5 01:06
        public static void main(String[] args) {
                Person p = new Person();
                p.setAge(20);
                // p.speak();//因为在person类中定义了speak方法并打印了
                System.out.println(p.getAge());//通过get方法获取年龄
        }
}
class Person {
        private int age;
        public int getAge() {
                return age;//调用get方法返回age。没有必要单独定义speak。
        }
        public void setAge(int age) {
                this.age = age;
        }
        /*
         * void speak() { System.out.println("age="+age); }
         */
}
作者: 枫儿    时间: 2014-4-7 10:54
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作




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