### 面向对象中的封装
一、封装的定义是什么?
在面向对象程式设计方法中,封装(英语: Encapsulation) 是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障, 防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能:在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
二、封装的优点
1.良好的封装能够减少耦合度。
2.类内部的结构可以自由修改。
3.可以对成员变量进行更精确的控制。
4.隐藏信息,实现细节。
三、封装的步骤及格式
第一段代码:
(注:以下两段代码是放在同一个类Person02中实现的)
/**
* 封装的步骤:
* 1.所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。
* 2.对外提供简单的操作入口,也就是说以后外部程序要想访问类内部的属性,必须通过这些简单的入口进行访问。
*/
public class Person02 {
/**
* 昵称
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 性别
*/
private int sex;
}
第二段代码:
/* *
* 对外提供两个公开的方法,分别是set方法和get方法
* 第一种方式:读取这个属性的值,调用get方法
* 第二种方式:修改这个属性的值,修改set方法
* 注意:setter and getter方法是没有static关键字的
* 有static关键字修饰的方法怎么调用:类名. 方法名(实参) ;
* 没有static关键字修饰的方法怎么调用:引用.方法名(实参) ;
*/
public void setAge(int b) {
//set方法命名规范:public void(因为set方法没有返回值) set+属性名“注意首字母大写”(形参){}
//在程序的入口进行业务逻辑判断
if (b < 0 || b >150) {
System.out.println("输入有误");
return;
}
age = b;
}
public int getAge() {
//get方法命名规范:public int(因为get方法有返回值类型) get+属性名“注意首字母大写”(){}
return age;
}
public void setName(String a) {
name = a;
}
public String getName() {
return name;
}
public void setSex(int c) {
sex = c;
}
public int getSex() {
return sex;
}
}
进行方法的调用:
public class Person02Test {
@Test
public void test01() {
//创建Person02对象
Person02 person02 = new Person02();
//给名字赋值 引用.方法名(实参)
person02.setName("java");
//用get方法读值
System.out.println(person02.getName());
System.out.println("******************************");
//给年龄赋值 引用.方法名(实参)
person02.setAge(20);
//读值
System.out.println(person02.getAge());
System.out.println("******************************");
//给性别赋值 引用.方法名(实参)
person02.setSex(1);
//读取 这里进行了性别的判断
System.out.println((person02.getSex() == 1? "男":"女"));
}
}
输出的结果:
java
******************************
20
******************************
男
四、快速生成set方法和get方法
public class Person01 {
/**
* 昵称
*/
String name;
/**
* 年龄
*/
int age;
/**
* 性别
*/
int sex;
}
1、当写完属性后,点击右键,找到source,将鼠标悬停。
2、在新展开的目录里找到Generate Getters Setters…点击打开。
3、在窗口的左上角和右上角根据自己的需求进行选择。
版权声明:本文为m0_67238428原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。