当前位置:网站首页>封装和包、访问修饰权限
封装和包、访问修饰权限
2022-08-02 20:03:00 【四分十七】
什么是封装
面向对象三大特征之一 -----------封装
封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
把尽可能多的东西藏起来,对外提供便捷的接口
如何实现封装
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 | 可以 | 可以 | 可以 | 可以 |
边栏推荐
猜你喜欢
随机推荐
.NET性能优化-你应该为集合类型设置初始大小
网上那么多教人赚钱的方法,但是你实际上是靠什么赚钱的呢?
arm64麒麟安装paddlehub(国产化)
golang源码分析之geoip2-golang
Redis cluster configuration
J9数字论:互联网跨链桥有什么作用呢?
ALV concept explanation
Solve the docker mysql can't write Chinese
V - memo new instructions
ssdp协议搜索GB28181设备
GNN教程:图神经网络基础知识!
SQL 入门之第一讲——MySQL 8.0.29安装教程(windows 64位)
Bena的生命周期
SQL Server数据类型转换函数cast()和convert()详解
Meta 与苹果的元宇宙碰撞
shell:条件语句
所谓武功再高也怕菜刀-分区、分库、分表和分布式的优劣
使用位运算实现加减乘除(+、-、*、/)及比较器的用法
SQL 嵌套 N 层太长太难写怎么办?
AI科学家:自动发现物理系统的隐藏状态变量