封装性
上一篇 / 下一篇 2013-11-27 22:18:05 / 个人分类:java
51Testing软件测试网!e fB#o$])Fr+n
51Testing软件测试网4rq{)w#k
掌握封装的产生目的
掌握封装的实现
掌握setter和getter方法的定义
51Testing软件测试网*k#Nd&N+hSG
51Testing软件测试网"bPvSvs#Q"K
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 = -30 ;
//为age属性赋值
per.tell() ; } } ; 51Testing软件测试网$R"\dp lIN |
语法上讲没有问题,但从实际角度看,不符合,根本是属性可以被外部直接访问,如年龄不可以为负数
51Testing软件测试网v3l@+DQK
51Testing软件测试网;P3P%hpu
2. 实现封装:
为属性封装:private属性类型 属性名称
为方法封装:private 方法返回值 方法名称(参数列表){}
R&H3~r-o F4CI0
class Person{ //人中有姓名和年龄两个属性 privateString name
; //声明姓名属性 privateint age ; //声明年龄属性
public void tell(){ //取得信息
System.out.println("姓名:" + name + ",年龄:" + age) ; } } ; public
class EncDemo02{
public static void main(String args[]){
Person per = new Person() ; //声明并实例化对象
per.name = "张三" ; //为name属性赋值
per.age = -30 ;
//为age属性赋值
per.tell() ; } } ; ubz(@M0 |
输出:
EncDemo02.java:12:错误: name可以在Person中访问private
per.name = "张三" ; //为name属性赋值
^ EncDemo02.java:13:错误: age可以在Person中访问private
per.age = -30 ;
//为age属性赋值
^ 2个错误 51Testing软件测试网*K8R Mm1Y7d4F |
提示是一个私有的访问权限,外部无法调用
l.e&\$i xG.g0
Z3hM7q|0
3. 访问封装的内容
class
Person{ //人中有姓名和年龄两个属性
private String name ;
//声明姓名属性
private int age ; //声明年龄属性
public void setName(String n){
//设置姓名
name = n ; }
public void setAge(int a){
//设置年龄
age = a ; }
public String getName(){
//取得姓名
return name ; }
public int getAge(){
//取得年龄
return age ; }
public void tell(){ //取得信息
System.out.println("姓名:" + name + ",年龄:" + age) ; } } ; public
class EncDemo03{
public static void main(String args[]){
Person per = new Person() ; //声明并实例化对象
per.setName ("张三") ; //调用setter设置姓名
per.setAge(-30) ;
//调用setter设置年龄
per.tell() ; } } ; 51Testing软件测试网q#Q`9l#D?5lX |
输出:
姓名:张三,年龄:-30 |
51Testing软件测试网s$@XvL Xj6k
对象可以访问封装的内容了,但是没有检测机制:
class
Person{ //人中有姓名和年龄两个属性
private String name ;
//声明姓名属性
private int age ;
//声明年龄属性
public void setName(String n){
//设置姓名
name = n ; }
public void setAge(int a){
//取得年龄 if(a>=0 && a<=150){ //加入验证
age = a ;
} }
public String getName(){
//取得姓名
return name ; }
public int getAge(){
//取得年龄
return age ; }
public void tell(){
//取得信息
System.out.println("姓名:" + name + ",年龄:" + age) ; } } ; public
class EncDemo04{ |