黑马程序员技术交流社区

标题: 帮忙看一段小程序 [打印本页]

作者: 王瀛    时间: 2012-12-22 10:59
标题: 帮忙看一段小程序
刚开始学,接触private。自己写了一段代码,运行虽然无误,但是感觉哪儿不太对的样子。。。
(setAge那里搞不懂,this也不是很明白)
能不能顺便说说 private的一些用法。
下面附代码
  1. package myTest;

  2. public class PersonDemo {

  3.        
  4.         public static void main(String[] args) {
  5.                 Person p = new Person();
  6.                 p.setAge(80);
  7.                 p.speak();
  8.         }

  9. }

  10. class Person{
  11.         private int age;
  12.        
  13.         public void setAge(int age){//设置age
  14.                 this.age = age;
  15.         }
  16.        
  17.         void speak(){
  18.                 System.out.println("my age is"+"..."+age);
  19.         }
  20. }
复制代码

作者: hanyahui    时间: 2012-12-22 11:15
把属性定义成私有的,不让其他类访问,然后给一个共有的set,get方法让他们设置,set里面你可以写过滤,不符合条件的不让输入,用这个避免了人们乱输入的情况
作者: 张占忠    时间: 2012-12-22 11:20

private  顾名思义,私有的!为何说是私有的,就是说:这个属性只有我定义的这个类可以调用,其他的类只可以,通过使用我这个类当中的方法。才可以使用这个属性。这个是为了,程序的严谨性。一些,重要的数据。都要,经过,实体类进行,封装!  比如说,姓名, 密码  身份啊!等!  
而 this.属性, 就是 通过这个方法调用本类的属性! 只在,这个类中使用!
作者: 董将    时间: 2012-12-22 11:44
这个里面少了一个无参构造器,这个自己最好写上,虽然不写系统会默认给你加上,但是在以后的程序学习中会产生一点点小问题,明确好private定义属性的特点,私有属性,只能在自己这个类中使用,但是我要给外界一个接口,能让别人访问,因而就需要写set get方法,通过这个方法,你可以设置好格式,让别人在访问时必须按照自己规定的格式来输入。
作者: 夏晓彤    时间: 2012-12-23 00:40
本帖最后由 夏晓彤 于 2012-12-23 00:41 编辑

this.age=age,  age是指的setAge(int age)方法中的参数,this.age是被private修饰的局部变量age
this举个例子,
class A{
   private String name;
  public StringgetName(){
       return this.name;
   }
   public void setName(String name){
        this.name=name
    }

}
main方法里执行的代码

A a1=new A();
A a2=new A();
a1.setName("aa");
a2.setName("bb");

当执行a1.setName("aa");的时候,this指的是a1,当执行a2.setName("bb");的时候,this指的就是a2,谁调用了这个类的成员,那么this就是值得这个对象
作者: 黄锦成    时间: 2012-12-24 11:50
被private修饰的方法和变量,只能在本类中使用。如果age不用private修饰,在其他类中可以通过“Person对象.age”访问,如果使用:
Person对象.age = 1000; 这样子,别人可以肆无忌惮地赋值,人有1000岁吗?所以把age私有化,只向外提供一个setAge方法:
     public void setAge(int age){\
                if(age>=1 && age<=150){//假设一出生就是1岁,在合理范围内,才设置
                       this.age = age;
               }else{
                        System.out.println("小于1岁/大于150岁的你,是一个妖怪啊");
               }
       }




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