体验Java的封装性

 1 package com.cnblogs.java;
 2 //体验Java的封装性
 3 /*
 4  * 如下的人类年龄赋值-300岁,显然很不合理,这种直接对类的属性赋值,有时候虽然不合理但却会编译通过。
 5  * 所以我们考虑不让对象直接操作属性,而是通过对象调用方法来对属性赋值,在方法中我们就可以进一步限制
 6  * 赋值的大小问题。
 7  * 解决办法:将类的属性私有化,通过共有的方法来调用修改类的属性。(在方法中限制修改的值)
 8  */
 9 public class TestPerson {
10     public static void main(String[] args) {
11         Person p=new Person();
12 //        p.name="康师傅";
13 //        p.age=-300;
14         p.setName("小明");
15         p.setAge(12);
16         //这种编译通过却不合理的赋值方法要避免
17         
18         p.info();
19     }
20 }
21 class Person{
22     private String name;//将属性私有化,避免对象直接调用属性。
23     private int age;
24     public void info(){
25         System.out.println("人的名字是:"+name+" 年龄是:"+age);
26     }
27     public String getName(){//获得名字
28         return name;
29     }
30     public int getAge(){//获得年龄
31         return age;
32     }
33     public void setName(String n){
34         if(n.length()>0 && n.length()<8){
35             name=n;
36         }else{
37             System.out.println("请输入一个简短的名字!");
38         }
39     }
40     public void setAge(int a){
41         if(a>0 && a<130){
42             age=a;
43         }else{
44             System.out.println("这不是一个人能达到的年龄!");
45         }
46     }
47 }

运行结果:

人的名字是:小明 年龄是:12