封装
即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别, 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作 数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。在电子方面,封 装是指把硅片 上的电路管脚,用导线接引到外部接头处,以便与其它器件连接。
封装
将成员变量进行私有化,就不能直接访问,只能通过对外的公共(public) 访问 方法修饰 被private修饰的成员变量/成员方法只能在本类中访问!
本来我们可以直接调用,但是这样不好,所以java里面就直接 将成员变量进行私有化,就不能直接访问,只能通过对外的公共(public) 访问 方法修饰
被private修饰的成员变量/成员方法只能在本类中访问!
封装前:
class Student{ String name ; // 姓名 private int age ; //年龄 //将成员变量输出 public void show(){ System.out.println(name+"----,"+age) ; } } class StudentDemo{ public static void main(String[] args){ //创建一个学生类的具体对象 Student s1 = new Student() ; //给成员变量赋值:对象名.成员变量 s1.name = "张三" ; //访问了私有成员 //s1.age = 27 ; s1.show(); } }
封装后
class Student2{ //成员变量 //姓名 private String name ; //性别 private String gender ; //年龄 private int age ; //学号 private String id; //提供对外的公共访问方法:seXXX()/getXXX() //给name设置 public void setName(String n) { //n 局部变量 name = n ; } //获取年龄的值 public String getName(){ return name ; } //性别的设置和获取 public void setGender(String g){ gender = g ; } public String getGender(){ return gender ; } //年龄 public void setAge(int a){ age = a ; } public int getAge(){ return age ; } //id学号 public void setId(String i){ id = i ; } public String getId(){ return id ; } //定义成员方法:显示成员变量 public void show(){ System.out.println("姓名是:"+name+",她的年龄是:"+age+",性别是: "+gender+",她的学号是:"+id) ; } } //测试类 class StudentTest{ public static void main(String[] args){ //需求: 给学生事物的具体对象的成员变量进行赋值 //创建学生对象 Student2 s = new Student2() ; //私有的成员不能访问 //s.name = "张三" ; //s.age = 18 ; //给name赋值 s.setName("张三") ; s.setGender("男") ; s.setAge(18) ; s.setId("9527") ; //姓名是:高圆圆,她的年龄是:38,性别是: 女,她的学号是:9527 s.show() ; System.out.println("--------------------------"); System.out.println(s.getName()+"----"+s.getGender()+"----"+s.getAge()+"-----"+s.getId()); } }
我们可以只关注于使用,而不关心具体的实现