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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王瀛 高级黑马   /  2012-12-22 10:59  /  1483 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚开始学,接触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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
把属性定义成私有的,不让其他类访问,然后给一个共有的set,get方法让他们设置,set里面你可以写过滤,不符合条件的不让输入,用这个避免了人们乱输入的情况

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报

private  顾名思义,私有的!为何说是私有的,就是说:这个属性只有我定义的这个类可以调用,其他的类只可以,通过使用我这个类当中的方法。才可以使用这个属性。这个是为了,程序的严谨性。一些,重要的数据。都要,经过,实体类进行,封装!  比如说,姓名, 密码  身份啊!等!  
而 this.属性, 就是 通过这个方法调用本类的属性! 只在,这个类中使用!

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个里面少了一个无参构造器,这个自己最好写上,虽然不写系统会默认给你加上,但是在以后的程序学习中会产生一点点小问题,明确好private定义属性的特点,私有属性,只能在自己这个类中使用,但是我要给外界一个接口,能让别人访问,因而就需要写set get方法,通过这个方法,你可以设置好格式,让别人在访问时必须按照自己规定的格式来输入。
回复 使用道具 举报
本帖最后由 夏晓彤 于 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就是值得这个对象
回复 使用道具 举报
被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岁的你,是一个妖怪啊");
               }
       }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马