什么是封装
面向对象三大特征之一 -----------封装
封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
把尽可能多的东西藏起来,对外提供便捷的接口
如何实现封装
1 修改属性的可见性(访问权限修饰符) 设置为private 防止错误的修改(仅本类中可以修改)
- // 定义属性
- private String name;
- private int health;
- private int love;
2 创建公有的getter 和setter 方法 属于类的读写
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
3 在get / setter 方法中加入属性控制语句 对属性的合法性进行判断
- public int getHealth() {
- return health;
- }
-
- public void setHealth(int health) {
- // 调用此方法 来给 health对象赋值 在赋值之前对传过来的health进行判断
- if (health < 0 || health > 100) {
- System.out.println("你输入的健康值有误,默认60");
- this.health = 60;
- return;// 结束代码后续操作
- }
- this.health = health;
- }
-
- public int getLove() {
- return love;
- }
-
- public void setLove(int love) {
- if (love < 0 || love > 100) {
- System.out.println("你的输入有误 默认80");
- return;
- }
- this.love = love;
- }
封装的好处
便于使用者正确使用系统,防止错误修改属性
有助于系统之间松耦合,提高系统独立性
提高软件的可重用性
降低了构建大型系统的风险
包(package)
Windows 树形文件系统
文档分门别类,易于查找和管理
使用目录解决文件同名冲突问题

包(package)的作用
允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件
防止命名冲突区分相同名字的类
有助于实施访问权限控制
如何创建包
- package cn.bdqn.demo02;
-
- public class Penguin {}
作为java源代码的第一条语句
用package声明包,以分号结尾
包的命名规范
包名由小写字母组成,不能以圆点开头或者结尾
package mypackage;
包名之前最好加上唯一的前缀,通常使用组织 倒置的网络域名
package net.javagroud.mypackage;
包名后续部分依不同机构内部的规范不同而不同
package net.javagroud.powerproject(部门名.项目名);
JDK提供基本包
java.lang 虚拟机自动导入
java.util 提供一些实用类
java.io 输入、输出
如何导包
为了使用不在同一包中的类,需要在java程序中使用import关键字导入这个包
import 包名.类名;
import java.util.*; //导入java.util包中所有类
import cn.jtest.classandobject.School; //导入指定包中指定类
使用包的注意事项
一个类同时引用两个来自不同包的同名类
必须通过完整类名来区分
每个包都是独立的,顶层包不会包含子包的类
package和import的顺序是固定的
package必须位于第一行(忽视注释行)
只允许有一个package语句
其次是import
接着是类的声明
访问权限控制
类成员的访问修饰
| 作用域 修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
| private | 可以 | 不可以 | 不可以 | 不可以 |
| 默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
| protected | 可以 | 可以 | 可以 | 不可以 |
| public | 可以 | 可以 | 可以 | 可以 |