黑马程序员技术交流社区

标题: 类中定义的成员变量就是对象中的属性吗,为什么? [打印本页]

作者: 王廷顺    时间: 2013-4-5 12:00
标题: 类中定义的成员变量就是对象中的属性吗,为什么?
本帖最后由 王廷顺 于 2013-4-5 16:15 编辑

代码如下:
class Person
{
      private int age;

      public void setAge(int a)
      {
           if(a > 0 && a < 130)
           {
                        age = a;
               speak();
           }
           else
                   System.out.println("非法年龄");
      }
      public int getAge()
      {
            return age;
      }

      void speak()
      {
           System.out.println("age = "+age);
      }
}

class PersonDemo
{
      public static void main(String[] args)
      {
          Person p = new Person();
          //p.age = 20;
          p.setAge(-20);
         // p.speak();
      }

}
上边的代码中“private int age;”语句和“ age = a;
”语句中是不是同一个age,为什么?类中的成员变量和对象中的属性又是什么关系呢?
作者: 刘焕新    时间: 2013-4-5 12:59
上边的代码中“private int age;”语句和“age = a;”语句中是同一个age。因为在一个类中,定义属性的名称是不可以重复的。
假如方法的参数列表里有个同名的参数,那么我们常用this作为前缀来指明它是当前类或对象的成员变量,例如:
  1. person(int age) {
  2.       //左边的this.age代表当前类的属性age,右边的age代表此方法传入的一个名叫age的参数
  3.       this.age = age;
  4. }
复制代码
类中的成员变量和对象中的属性是同一个概念,也就是说,它们同一个东西,只是叫法不同罢了。
顺便说下,你一定要先弄清类和对象的概念和关系啊。
作者: jiangnan    时间: 2013-4-5 14:26
是同一个,楼上说的已经很清楚了。类的属性:数据成员(成员变量、属性、字段)  类的操作:方法成员(过程、函数)
作者: 田光峰    时间: 2013-4-5 14:29
class Person
{
      private int age;

      public void setAge(int a)
      {
           if(a > 0 && a < 130)
           {
                        age = a;
               speak();
           }
           else
                   System.out.println("非法年龄");
      }
      public int getAge()
      {
            return age;
      }

      void speak()
      {
           System.out.println("age = "+age);
      }
}

class PersonDemo
{
      public static void main(String[] args)
      {
          Person p = new Person();
          //p.age = 20;
          p.setAge(-20);
         // p.speak();
      }

}

代码中“private int age;”语句和 age = a;中的age表示的是同一个成员变量
因为成员变量是全局的,是可以这样写的。如果有局部变量 为了加以区分要在成员变量前加this来表示变量时成员变量
而不是局部变量
this.成员变量=局部变两;
对象就是类的具体实现,对象中属性其实就是类中成员变量的另一种叫法,其实是一样的。





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