什么是封装
面向对象三大特征之一 -----------封装
封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
把尽可能多的东西藏起来,对外提供便捷的接口
如何实现封装
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 |
可以 |
可以 |
可以 |
可以 |