封装(数据隐藏):通常应禁止直接访问一个对象中的数据的实际表示,而应通过操作接口来访问
(主要对属性进行封装)
程序应该追求低耦合,高内聚,
低耦合:仅暴露少量的方法给外部使用;
高内聚:类的内部数据操作细节自己完成。
属性私有,get/set
package com.yuanyu.Oop; public class Student { private String name; //属性私有 public int id; private char sex; private int age; /* 提供一些可以操作这些属性的方法:set、get get:获得这个数据 set:给这个数据设置值 */ public String getName() { //set/get return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { if (age>120||age<0){ //不合法数据 this.age=-1; }else { this.age = age; } } }
package com.yuanyu.Oop; public class Application { public static void main(String[] args) { Student s1=new Student(); //s1.name="Mike"; //private修饰无法直接调用 s1.id=21; //public修饰可以直接调用 s1.setName("yuanyu"); System.out.println(s1.getName()); //yuanyu s1.setAge(999); //该数据不合法,可以在set方法中使用条件语句来避免 System.out.println(s1.getAge()); //-1 s1.setAge(21); System.out.println(s1.getAge()); //21 } }
封装的意义: