• 封装和包、访问修饰权限


    什么是封装

             面向对象三大特征之一   -----------封装

             封装的概念

                     将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

                     把尽可能多的东西藏起来,对外提供便捷的接口

    如何实现封装

                       1 修改属性的可见性(访问权限修饰符) 设置为private 防止错误的修改(仅本类中可以修改)     

                             

    1. // 定义属性
    2. private String name;
    3. private int health;
    4. private int love;

                       2 创建公有的getter 和setter 方法           属于类的读写

    1. public String getName() {
    2. return name;
    3. }
    4. public void setName(String name) {
    5. this.name = name;
    6. }

                        3 在get / setter 方法中加入属性控制语句      对属性的合法性进行判断

    1. public int getHealth() {
    2. return health;
    3. }
    4. public void setHealth(int health) {
    5. // 调用此方法 来给 health对象赋值 在赋值之前对传过来的health进行判断
    6. if (health < 0 || health > 100) {
    7. System.out.println("你输入的健康值有误,默认60");
    8. this.health = 60;
    9. return;// 结束代码后续操作
    10. }
    11. this.health = health;
    12. }
    13. public int getLove() {
    14. return love;
    15. }
    16. public void setLove(int love) {
    17. if (love < 0 || love > 100) {
    18. System.out.println("你的输入有误 默认80");
    19. return;
    20. }
    21. this.love = love;
    22. }

    封装的好处

               便于使用者正确使用系统,防止错误修改属性

               有助于系统之间松耦合,提高系统独立性

                提高软件的可重用性

                 降低了构建大型系统的风险

    包(package)

            Windows 树形文件系统

                     文档分门别类,易于查找和管理

                     使用目录解决文件同名冲突问题

                                                                                    

     包(package)的作用

               允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件

               防止命名冲突区分相同名字的类

                有助于实施访问权限控制

      如何创建包

                  

    1. package cn.bdqn.demo02;
    2. 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

    可以

    可以

    可以

    可以

     

  • 相关阅读:
    Java-IO流之字符流(下篇)
    阿里云一键登录(号码认证服务)
    极智AI | TensorRT Parser 构建模型推理方法
    Java之反射机制
    MySQL第四讲·如何正确设置主键?
    企业信用等级评价认证是什么
    如何定时备份使用Docker构建的MySQL容器中的数据库
    替代安全指标(Surrogate Safety Measures (SSM) )
    IDEA Windows下SPARK连接Hive
    软件开发项目文档系列之十五如何撰写项目结项报告
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126123995