当前位置:网站首页>封装和包、访问修饰权限
封装和包、访问修饰权限
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 | 可以 | 可以 | 可以 | 可以 |
边栏推荐
- Tencent YunMeng every jie: I experienced by cloud native authors efficiency best practices case
- js如何获取浏览器缩放比例
- Redis集群配置
- In action: 10 ways to implement delayed tasks, with code!
- Five data structures of Redis and their corresponding usage scenarios
- Lvm逻辑卷
- 六石管理学:入门机会只有一次,先把产品做好
- 信息学奥赛一本通(1259:【例9.3】求最长不下降序列)
- Leetcode刷题——单调栈问题(739每日温度问题、496下一个更大元素I、503下一个更大元素 II)
- Meta 与苹果的元宇宙碰撞
猜你喜欢

谷歌竞价机器学习如何去理解?

shell:条件语句

实战:10 种实现延迟任务的方法,附代码!
Solve the docker mysql can't write Chinese

Axure9的元件用法

ssdp协议搜索GB28181设备
![[AnXun cup 2019] easy_web](/img/26/c04bc8b9c65ac75ddd2696b48e1661.png)
[AnXun cup 2019] easy_web

Redis cluster configuration

A Review of Nature Microbiology: Focusing on the Algae--Ecological Interface of Phytoplankton-Bacteria Interactions
The time series database has been developed for 5 years. What problem does it need to solve?
随机推荐
LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
postgresql autovaccum自动清理
J9数字论:互联网跨链桥有什么作用呢?
ALV报表学习总结
J9 Digital Currency Theory: Identifying Web3's New Scarcity: Open Source Developers
顺序查找和折半查找,看这篇就够了
PG 之 SQL执行计划
shell:条件语句
PyTorch分布式backends
Geoip2 - golang golang source code analysis
笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
AI Scientist: Automatically discover hidden state variables of physical systems
A Review of Nature Microbiology: Focusing on the Algae--Ecological Interface of Phytoplankton-Bacteria Interactions
什么是 IDE
Electron使用指南之初体验
软件成分分析:华为云重磅发布开源软件治理服务
信息学奥赛一本通(1259:【例9.3】求最长不下降序列)
ssdp协议搜索GB28181设备
Triacetin是什么化学材料
TodoList案例