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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑白小調° 中级黑马   /  2014-1-7 21:25  /  1588 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑白小調° 于 2014-1-8 19:27 编辑

/*这个程序中的  public  int  getAge()的作用是什么?可以省略或者写成其他形式吗?
                   {
                     return  age;
                   }*/
class   Person
{
  private  int  age;
  public  void  setAge(int  a)
   {
       if(a>0&&a<130)
              age=a;
             speak( );
      else
              System.out.println("over");
   }
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.setAge(40);
    }
}

13 个回复

倒序浏览
public  int  getAge()和  public  void  setAge(int  a)是set/get方法;是子类获取父类的的私有属性的方法。
回复 使用道具 举报

RE: 封装问题

本帖最后由 @翱翔@ 于 2014-1-7 21:56 编辑

public  int  getAge()和  public  void  setAge(int  a)是set/get方法;是子类获取父类的的私有属性的方法。不能改成别的形式。
回复 使用道具 举报
public int getAge(){}方法的作用是:你把成员变量private私有化了,类外部的都访问不到这个成员变量age,这时一般情况下都需要向外界提供访问私有化成员变量的方法。一般格式是:返回值类型  getXxx(){};
但也可以自定义方法名
回复 使用道具 举报
建议:多看视频多动脑,做好笔记,有些问题自己是可以解决的
回复 使用道具 举报
属性是用于存储数据的,直接被访问,容易出现安全隐患,所以,类中的属性通常被私有化,也就是  static int age;变量被私有化了,并对外提供公共的访问方法。这个  public  int  getAge()就是提供公共的访问方法。。。。
回复 使用道具 举报
public  int  getAge()的作用是提供公共的访问方法、、、开发中最好写成这种形式。。。毕老师的视频看仔细一点就可以了。。。
回复 使用道具 举报
为了安全起见类中的一些属性一般是私有的,外界是无法访问的。当外界要访问这些属性的值,比如获取某个类的属性值或设置某个属性值时都是通过getXX()或setXXX(),这些方法不仅是子类获取父类中的方法,绝大多数是外界修改某个类的属性值或获取某个属性值用,比如在与数据库层相连接的javabean类!!
虽然有时也可以通过构造方法在创建对象时来设置属性值,但那样太局限当修改某个值时也就创建了某个对象此时这两个也不是同一个对象,所以对于那些常用于设置或获取属性值的类不能删除
回复 使用道具 举报
写程序的时候,我们会使某些成员变量有要求,所以为了防止调用者传入非法的值,我们就会把这些成员变量定义成私有的成员变量,但是私有的成员变量只在本类有效,本类之外的不能访问它,所以就提供了public  void  setAge()和public  int  getAge()这两种方法来提供公共的访问方式来给私有成员变量赋值以及取值。对于能不能用其他的方法来代替,那就要看这个程序的用途了,如果说这些私有成员变量只是对象一建立就有值,并且以后不会改,那么,用构造函数也是可以的,eg
Person(int age)
{
      this.age=age;
      System.out.println("age="+age);
}
或者在别的相应的语句中输出;如果说,此对象的age值以后还会改变,那么就用
public  int  getAge()。我是这样的理解的,答案仅供参考的,如有错误,请及时的回复我,大家互相学习。
回复 使用道具 举报
  1. class   Person
  2. {
  3.   private  int  age;
  4.   public  void  setAge(int  a)
  5.    {
  6.        if(a>0&&a<130)
  7.               age=a;
  8.              speak( );
  9.       else
  10.               System.out.println("over");
  11.    }
  12. public  int  getAge( )
  13. {
  14.        return  age;
  15. }
  16. void  speak( )
  17. {
  18.     System.out.println("age="+age);
  19. }
  20. class  PersonDemo
  21. {
  22.    public  static  void  main  (String[ ]  args)
  23.     {
  24.         person  P=new  Person( );
  25.         P.setAge(40);
  26.     }
  27. }
复制代码
你这里的age是私有封装了的,所以必须用getter方法来提供给外部调用.你说的方法就是返回
回复 使用道具 举报
你把成员变量private私有化了Person(int age)
{
      this.age=age;
      System.out.println("age="+age);
}
回复 使用道具 举报
set是存储的方法,get是获取的方法,这两个是用来获取私有属性的两种方法,不能修改,在这个题中你把Person类中的age私有化了,如果要对age进行操作的话就必须有set和get方法。
回复 使用道具 举报
set方法建立属性值 get方法获取属性值 这些写简单 也好理解  没必要写成别的
回复 使用道具 举报
一个类你的一些属性,需要私有化,不让对象修改,他们只要获取就行了,所以定义get方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马