java面向对象之封装

### 面向对象中的封装

一、封装的定义是什么?

在面向对象程式设计方法中,封装(英语: 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版权协议,转载请附上原文出处链接和本声明。