当前位置:网站首页>封装和包、访问修饰权限
封装和包、访问修饰权限
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 | 可以 | 可以 | 可以 | 可以 |
边栏推荐
猜你喜欢
ShardingSphere-proxy +PostgreSQL implements read-write separation (static strategy)
李沐动手学深度学习V2-BERT预训练和代码实现
SQL 入门之第一讲——MySQL 8.0.29安装教程(windows 64位)
LM小型可编程控制器软件(基于CoDeSys)笔记二十五:plc的数据存储区(数字量输入通道部分)
Axure9的元件用法
LeetCode:622. 设计循环队列【模拟循环队列】
线程安全(上)
【软件工程导论】软件工程导论笔记
4KMILES加入艾盛集团,以更强劲的数字商务能力,加速中国跨境电商的全域全效增长
如何解决图像分类中的类别不均衡问题?不妨试试分开学习表征和分类器
随机推荐
译出我精彩 | 7月墨力翻译计划获奖名单公布
J9 digital theory: the Internet across chain bridge has what effect?
六石管理学:入门机会只有一次,先把产品做好
Implement fashion_minst clothing image classification
笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
Electron使用指南之初体验
Soft Exam ----- UML Design and Analysis (Part 2)
广东省数字经济发展指引 1.0之建成数据安全保障体系
腾讯云孟凡杰:我所经历的云原生降本增效最佳实践案例
Fiddle设置接口数据用指定工具查看;Sublime Text设置json数据格式化转换
实战:10 种实现延迟任务的方法,附代码!
Qt提升自定义控件,找不到头文件
Likou Question of the Day - Day 46 - 344. Reverse Strings
Redis cluster configuration
【LeetCode】622. 设计循环队列
奥特学园ROS笔记--7(289-325节)
基于 outline 实现头像剪裁以及预览
J9 Digital Currency Theory: Identifying Web3's New Scarcity: Open Source Developers
模板的进阶
The so-called fighting skill again gao also afraid of the chopper - partition, depots, table, and the merits of the distributed