如果不用private封装:
class Person{
public String name;
public int age;
public void work()
{
System.out.println(name+"在工作!");
}
public void age()
{
System.out.println(name+age+"岁了!");
}
}
//主类
public class Test{
//主方法
public static void main(String[] args)
{
Person per1=new Person();
per1.name="花花";
per1.age=-18;
per1.work();
per1.age();
}
}
主方法相当于执行客户端,我们在客户端对属性进行操作,极有可能出现常识错误此时年龄为-18,编译执行并不会有任何错误,但是却不符合真实情况,没有人的年龄会比0小,此时,要想回避此类问题,让内部操作对外部不可见(对象不能直接操作属性),就可以使用private对属性进行封装。
eg:
private String name;
private int age;
将属性,方法用private封装后,表示被封装的属性以及方法只能在本类的内部使用,类外部不可见。
此时要想访问被封装的属性,必须提供getter和setter方法
- setA:主要用于进行属性内容的设置与修改
- getA:主要用于属性内容的获取。
范例:
class Person{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String na)
{
name=na;
}
public int getAge()
{
return age;
}
public void SetAge(int a)
{
if(a <= 0)
{
System.out.println("年龄输入错误!");
}
else
{
age=a;
}
}
public void work()
{
System.out.println(name+"在工作!");
}
public void age()
{
System.out.println(name+age+"岁了!");
}
}
public class Test{
public static void main(String[] args)
{
Person per1=new Person();
per1.SetAge(-18);
per1.setName("花花");
per1.work();
per1.age();
}
}
编写类时,类的所有属性必须用private封装。属性若要被外部访问,必须定义属性的get或set方法。