1.封装的产生目的
2.掌握封装的实现
3.掌握setter和getter 的定义
为什么要封装?
封装就是保护内容
这样的代码是不符合要求的,其根本原因就是可以被外部给改变
其实这样年龄为负值也是不好的 所以你可以在setter 方法中加入验证
2.掌握封装的实现
3.掌握setter和getter 的定义
为什么要封装?
封装就是保护内容
保证某些属性或方法可以不被外面看见
看看下面的代码存在的问题:
class Person{
String name ; // 声明姓名属性
int age ; // 声明年龄属性
public void tell(){
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
};
public class EncDemo01{
public static void main(String arsgh[]){
Person per = new Person() ; // 声明并实例化对象
per.name = "张三" ; // 为name属性赋值
per.age = -30 ; // 为age属性赋值
per.tell() ;
}
};
这样的代码是不符合要求的,其根本原因就是可以被外部给改变
2.实现封装
为属性封装 :private 属性类型 属性名字
为方法封装 :private 方法返回值 方法名称(参数列表){}
class Person{
private String name ; // 声明姓名属性
private int age ; // 声明年龄属性
public void tell(){
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
};
public class EncDemo02{
public static void main(String arsgh[]){
Person per = new Person() ; // 声明并实例化对象
per.name = "张三" ; // 为name属性赋值
per.age = -30 ; // 为age属性赋值
per.tell() ;
}
};
这样以后 你是无法访问的
被封装的属性如果需要被访问就需要编写setter及getter方法实现
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 arsgh[]){
Person per = new Person() ; // 声明并实例化对象
per.setName("张三") ; // 调用setter设置姓名
per.setAge(-30) ; // 调用setter设置年龄
per.tell() ; // 输出信息
}
};
其实这样年龄为负值也是不好的 所以你可以在setter 方法中加入验证