java三大特性之封装
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 方法中加入验证