封装的作用:封装就是保护内容,保证某些属性或方法可以不被外部看见
1、为什么要有封装,我们先来看一个例子
class Person
{
//人中有姓名和年龄两个属性
String name ; //表示姓名
int age ; //表示年龄
public void tell()
{ //取得信息
System.out.println("姓名 :" + name + ", 年龄:" + age) ;
}
}
public class EncDemo01
{
public static void main(String args[])
{
Person per = new Person() ; //声明并实例化对象
per.name = "张三" ; //为name属性赋值
per.age =<span style="color:#ffffff;background-color: rgb(255, 0, 0);"> -20 </span>; //为age属性赋值
per.tell() ;
}
}
输出结果:
姓名 :张三, 年龄:-20
实现封装:
为属性封装:private 属性类型 属性名称
为方法封装: private 方法返回值 方法名称(参数列表){}
被封装的属性如果需要被访问,则需要setter及getter方法完成。
<span style="background-color: rgb(255, 255, 255);"> class Person
{
//人中有姓名和年龄两个属性
</span><span style="background-color: rgb(255, 102, 102);"> private</span><span style="background-color: rgb(255, 255, 255);"> String name; //声明姓名属性
</span><span style="color:#ffffff;background-color: rgb(255, 102, 102);"> private</span><span style="background-color: rgb(255, 255, 255);"> int age; //声明年龄属性
public void</span><span style="background-color: rgb(255, 102, 102);"> setName</span><span style="background-color: rgb(255, 255, 255);">(String n){ //设置姓名
name = n;
}
public void </span><span style="background-color: rgb(255, 102, 102);">setAge</span><span style="background-color: rgb(255, 255, 255);">(int a){ //取得年龄
</span><span style="background-color: rgb(255, 102, 102);">//加入检测机制,</span><span style="background-color: rgb(255, 255, 255);">如果年龄小于0或大于150岁,则置为0。</span>
<span style="background-color: rgb(255, 255, 255);"><span style="white-space:pre"> </span> if(a>=0 && a<=150){ //加入验证
age = a;
}
}
public String </span><span style="background-color: rgb(255, 102, 102);">getName()</span><span style="background-color: rgb(255, 255, 255);">{ //取得姓名
return name;
}
public int</span><span style="background-color: rgb(255, 102, 102);"> getAge()</span><span style="background-color: rgb(255, 255, 255);">{ //取得年龄
return age;
}
public void tell(){ //取得信息
System.out.println("姓名 :" + name + ", 年龄:" + age) ;
}
}
public class EncDemo02
{
public static void main(String[] args)
{<span style="color:#ffffff;">
</span> Person per = new Person(); //声明并实例化对象
per.setName ("张三"); //调用setter设置姓名
per.setAge(-30); //调用setter设置年龄
per.tell();
}
} ; </span><span style="background-color: rgb(255, 102, 102);">
</span>
输出结果:
姓名 :张三, 年龄:0