1.封装的概念
封装是面向对象的核心思想,其主要目的是将对象的属性和行为封装起来,外界不需要知道具体的实现细节,使用的时候只有通过特定的方法才能访问内部代码逻辑,也就是将类中的属性私有化(通过使用private关键字来修饰,让属性只能在本类中被访问,然后在提供几个public修饰的公用方法供外部访问)。
2.访问权限
Java提供了4种访问权限:
1)Private:私有的,只有本类内部可见
2)default:默认,同包可见
3)Protected:受保护的,非继承,同包可见;继承的情况下,子类可见,同包可见
4)Public :共有的,任何地方都可见
3.实现封装
封装的形式之一Getter/Setter:
getter方法:为外部访问提供查询操作
setter方法:为外部访问提供赋值操作
尽可能多的隐藏代码内容
使用private访问修饰符来隐藏要封装所有属性
package org.example; /** * 封装 * 1.定义属性私有化 * 2.设置公共方法供外部访问 */ public class Student { private String name; //名字私有化 private int age;//年龄私有化 /* *给私有化的name设置getter方法 */ public String getName() { return name; } /* *给私有化的name设置setter方法 */ public void setName(String name) { this.name = name; } /* *给私有化的age设置getter方法 */ public int getAge() { return age; } /* *给私有化的age设置getter方法 */ public void setAge(int age) { if (age <= 0){ System.out.println("年龄不合法。。。。"); } this.age = age; } public void introduce(){ System.out.println("大家好!我叫"+name+",我今年"+age+"岁!"); } }
package org.example; public class Exceple1 { public static void main(String[] args) { //实例化对象并赋值给Student类型的变量stu Student stu = new Student(); stu.setName("小红"); //通过公开的方法设置姓名 stu.setAge(-10);//通过公开的方法设置年龄 stu.setAge(18); stu.introduce();//调用公开方法 } }
属性私有化后,只能通过提供的公开方法访问到属性,这就是面向对象的封装特性。
运行结果: