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