一. 封装的概念和特点

  1. 封装:
    将类的某些信息隐藏在类内部,不允许外部程序直接访问;
    通过该类提供的方法来实现对隐藏信息的操作和访问;
    隐藏对象的信息;
    留出访问的接口。
  2. 封装的特点:
    (1) 只能通过规定的方法访问数据;
    (2) 隐藏类的实例细节,方便修改和实现。

二. 封装的代码实现

  1. 实现步骤
    (1) 修改属性的可见性,将其修改为private,表明这个属性只能在当前类内被访问,出了这个类,就不能被访问了;
    (2) 创建getter/setter方法,设为public方法,用于属性的读写,设置了这两个公有的方法,就可以在类外完成私有属性的访问了;
    (3) 在getter/setter方法中加入属性控制语句,对属性的合法性进行判断(比如性别只能输入男或者女,年龄只能输入为正值等等)。
    案例:
package com.study.animal;

public class Cat {
	// 成员属性:昵称、年龄、体重、品种
	// 修改属性的可见性---private 限定只能在当前类内访问
	private String name;// 昵称 String类型默认值null
	private int month;// 年龄 int类型默认值0
	private double weight;// 体重 double类型默认值0.0
	private String species;// 品种

	// 创建get/set方法
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return "我是一只名叫:" + this.name + "的宠物猫";
	}

在主方法内调用get/set方法

package com.study.animal;

//单一职责原则
public class CatTest {
	public static void main(String[] args) {
		// 对象实例化
//		Cat one = new Cat(3);
		Cat one = new Cat();
		// 测试
		one.setName("喵喵");

		System.out.println("昵称:" + one.getName());
	}
}

(4) 快速定义get/set方法
在定义完如下私有属性后:

/ 成员属性:昵称、年龄、体重、品种
	// 修改属性的可见性---private 限定只能在当前类内访问
	private String name;// 昵称 String类型默认值null
	private int month;// 年龄 int类型默认值0
	private double weight;// 体重 double类型默认值0.0
	private String species;// 品种

鼠标右键,点击Source→\toGenerate Getters and Setters→\to勾选需要生成getters和setters的私有属性
注:只有getXXX方法的属性是只读属性;只有setXXX方法的属性是只写属性。
可以通过异常处理优化程序,后面会详细介绍。
3. 定义包
(1) 语法:

package 包名;

例如:package com.study.animal;
(2) 注意:
a. 必须放在Java源文件中的第一行;
b. 一个Java源文件中只能有一个package语句;
c. 包名全部英文小写;
d. 命名方式:域名倒序+模块+功能

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐