Java超详细介绍封装与访问控制修符

概念:我们在写入一个类的时候,为了保护里边的属性不被随意的调用这是我们可以使用特殊的修饰符进行相应的保护,而这样的话我们似乎只能在该类中调用使用了,出现某些特殊情况时就会无法发调用,虽然挺高了安全性但也降低了灵活性,这个时候我们的包装类就出现了,我们通过对某个方法的进行特殊方法的包装来对其进行相应的调用与赋值。就相当于银行为了保护财产会选择将金钱放进保险柜中来确保其的安全,但是当我们要取钱时,银行就要拿钥匙打开保险柜。修饰符相当于银行的保险柜,封装相当于保险柜的钥匙。

访问修饰符如下:

1) public 公共控制修饰符

2) protected 保护访问控制修饰符

3) default 缺省默认控制修饰符

4) private 私有访问控制符

它们的访问权限如下图:

包装的特点:

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

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

3)提高软件的重用性

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

包装的快捷键:

大部分的编译软件都有相应的包装快捷键就例如我用的开发工具idea就像相对应的get()set()有参无参构造方法如下图

我们右键单击后会出现相应选项我们点击Generate,也有相应的快捷键Alt+Insert直接打开Generate

进入Generate后我们选择Constructor

该选项是选择无参和有参构造的,我们全选点击OK即可将所有的私有属性进行有参构造,点击

Select None则是进行无参构造

再次进入Generate后我们选择Getter and Setter

该选项是构造方法引入和修改私有属性,Getter()表示获属性,Setter()表示修改属性,进入后我们全选点击OK,就可以进行构造。

测试类代码如下:

package com.ytzl.total;
/*封装类*/
public class test {
    public static void main(String[] args) {
        //实例化一个对象
        encapsulation encapsulation = new encapsulation();
        System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getA());
        System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getB());
        //我们也可以通过相应的构造方法来改变风种类中的私有属性
        encapsulation.setA(20);
        encapsulation.setB("被是同相应的构造方法进行改变");
        System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getA());
        System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getB());
        //我们也可以通过封装方法来改变封装类中的私有属性
        encapsulation encapsulation1 = new encapsulation(10,"被调用方法改变后");
        System.out.println("通过调用方法类来改变封装类中的私有属性后==>"+encapsulation1.getA());
        System.out.println("通过调用方法类来改变封装类中的私有属性后==>"+encapsulation1.getB());
    }
}

实体类代码如下:

package com.ytzl.total;
public class encapsulation {
    private int a=8;
    private String b="私有属性";
    public encapsulation() {
    }
    //如果需要在调用方法中改变私有属性需要调用该有参方法
    public encapsulation(int a, String b) {
        this.a = a;
        this.b = b;
    }
    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}

运行结果如下:

到此这篇关于Java超详细介绍封装与访问控制修符的文章就介绍到这了,更多相关Java封装内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-05-13

Java面向对象的封装你了解吗

目录 面向对象思想之封装 什么是封装呢? 封装的好处意义 getter方法和setter方法 toString方法 总结: 面向对象思想之封装 或许大家都听说过java是纯面向对象语言,面向对象思想也就是我们常说的OOP,我们听说最多的思想就是继承,封装,多态,今天我们来讲一讲封装. 什么是封装呢? 封装就是一种将数据和操作数据的方法进行有机结合,一种函数抽象类的接口实现了对细节的封装和隐藏,使得我们只需要调用对外开放的公共接口去实现与对象的交互.我们可以把封装理解为一种保护的屏障,需要一些严格

Java全面分析面向对象之封装

目录 什么是封装呢 封装的好处意义 getter方法和setter方法 toString方法 面向对象封装之包 自定义包 什么是封装呢 封装就是一种将数据和操作数据的方法进行有机结合,一种函数抽象类的接口实现了对细节的封装和隐藏,使得我们只需要调用对外开放的公共接口去实现与对象的交互.我们可以把封装理解为一种保护的屏障,需要一些严格的接口进行控制,我们可以修改自己实现类的内部结构的代码,但是不可以修改那些公共接口.这就提供更好的安全性. 封装的好处意义 好的封装能够减少耦合度 能够对成员变量更精

详细聊一聊java中封装的那点事

目录 什么是封装 封装拓展之包 包的概念 什么是包访问权限 什么是静态成员 总结一下: 什么是封装 什么是封装呢?我们先来看一段代码 class Student { public String name; private int age; } public class Test4 { public static void main(String[] args) { // 引用变量student指向该新创建的对象 Student student = new Student(); // 实例化对象

Java超详细讲解三大特性之一的封装

目录 封装 封装的概念 Java中的包 java中类的成员-构造器 java中的this关键字 总结 说到面向对象则不得不提面向对象的三大特征:封装,继承,多态.那么今天就和大家先来介绍什么是封装. 封装 封装的概念 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问. 为什么需要封装? 当我们创建一个类的对象后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值.这里赋值操作要受到 属性的数据类型和存储范围的制约.除此之外,没有其他制约

Java四种访问控制修饰符知识点总结

java有四种访问控制修饰符. public protected private default(默认为空,不加任何修饰) 为了用代码对比出其中的区别,首先建立两个包,分别为area1和area2:五个类,分别是Person.PersonDemo.PersonSon.PersonTest.OutPerson. 然后Person.PersonDemo.PersonSon放在area1包下. PersonTest.OutPerson放在area2包下. 四个访问控制修饰符在同类下的代码例子: pac

详解Java基础之封装

目录 Java基础知识(封装) 封装 封装的目的 封装的好处 封装的步骤 封装的例子 总结 Java基础知识(封装) 封装 那封装是什么呢? 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法. 封装的目的 直接通过操控类对象来达到目的,不需要对具体实现十分了解,使类属性和方法的具体实现对外不可见.不但方便还起到了保护作用. 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段. 适当的封装可

详解Java基础知识——JDBC

JDBC Java DataBase Connectivity,java数据库连接,为了降低操作数据的难度,java提供jdbc,按照java面向对象特点,对操作进行了很多封装. JDBC提供了很多接口,然后不同数据库厂商去实现这个接口,到底底层如何去实现,不同的数据库不一样,不同的数据库厂商需要提供接口实现类(驱动类.驱动程序 Driver.驱动) 我们连接不同的数据库,我们只需要使用不同的驱动即可. J:Java:提供访问数据库的规范(接口), DBC:接口的实现,厂商去实现这个接口. JD

详解java基础--提示对话框的使用

一.显示信息对话框:使用"JOptionPane.showMessageDialog"显示: 图标 对话框类型 语法 显示错误类型对话框 showMessageDialog(null,"这是内容,显示错误","标题",JOptionPane.ERROR_MESSAGE); 传达信息类型对话框 showMessageDialog(null, "这里是传达信息的信息内容"); 警告对话框 JOptionPane.showMessa

详解Java基础篇--面向对象1(构造方法,static、this关键字)

面向对象,面向过程的区别.拿下五子棋来说: 面向过程分析: 开始游戏 黑棋先走 绘制画面 判断输赢 轮到白棋 绘制画面 判断输赢 返回步骤2 输出结果 面向对象分析: 黑白双方,双方行为是一模一样的 棋盘系统,负责绘制画面 规则系统,判断犯规.输赢 传统的面向过程编程是思考问题的解决步骤,这种思维方式适用于问题规模较小时.可是当问题规模大,要求程序有更好的可扩展性,能更快速地查错时面向对象设计思想就能体现出其优势.面向对象更接近人类地自然思维方式,将现实世界中的事物抽象为对象和对象的方法. 面向

详解Java中的封装、继承、多态

封装 在如何理解面向对象这篇文章中,提到所谓的封装就是"功能都给你做好了,你不必去理解它是怎么写出来的,直接使用即可.".但你得清楚一点,那就是这句话是相对于使用者来说的,而作为开发者,封装就得我们自己来干. 那么作为开发者,我们应该如何去封装呢?其实你应该反过来问,他们应该如何去使用,这样一想会简单很多,作为使用者,自然是希望越简单越好,也就是说,一些复杂的东西,我们不应该让使用者去操作,那也就是说我们应该把复杂的,以及不必要的参数给它封死,不让使用者去操作. 为什么不让使用者去操作

详解java调用存储过程并封装成map

详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家, 实例代码: public List<Map<String , Object>> doCallProcedure(String procedureString,String[] parameters) throws PersistentDataOperationException { if (!isReady ()) { throw new PersistentDataOperatio

详解Java虚拟机管理的内存运行时数据区域

详解Java虚拟机管理的内存运行时数据区域 概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁. 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基

详解Java动态代理的实现及应用

详解Java动态代理的实现及应用 Java动态代理其实写日常业务代码是不常用的,但在框架层一起RPC框架的客户端是非常常见及重要的.spring的核心思想aop的底层原理实现就使用到了java的动态代理技术. 使用代理可以实现对象的远程调用以及aop的实现. java的动态代理的实现,主要依赖InvoctionHandler(接口)和Proxy(类)这两个. 下面是一个例子 实现的代理的一般需要有个接口 package com.yasin.ProxyLearn; public interface

详解Java中的 枚举与泛型

详解Java中的 枚举与泛型 一:首先从枚举开始说起 枚举类型是JDK5.0的新特征.Sun引进了一个全新的关键字enum来定义一个枚举类.下面就是一个典型枚举类型的定义: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类. 而这些类都是类库中Enum类的子类(Java.lang.Enum).它们继承了这个Enum中的许多有用的方法.我们对代码编译之后发现,编译器将 enu

详解java中反射机制(含数组参数)

详解java中反射机制(含数组参数) java的反射是我一直非常喜欢的地方,因为有了这个,可以让程序的灵活性大大的增加,同时通用性也提高了很多.反射原理什么的,我就不想做过大介绍了,网上一搜,就一大把.(下面我是只附录介绍下) Reflection 是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等).superclass(例如O

详解Java的堆内存与栈内存的存储机制

堆与内存优化     今天测了一个项目的数据自动整理功能,对数据库中几万条记录及图片进行整理操作,运行接近到最后,爆出了java.lang.outOfMemoryError,java heap space方面的错误,以前写程序很少遇到这种内存上的错误,因为java有垃圾回收器机制,就一直没太关注.今天上网找了点资料,在此基础上做了个整理.  一.堆和栈 堆-用new建立,垃圾回收器负责回收 1.程序开始运行时,JVM从OS获取一些内存,部分是堆内存.堆内存通常在存储地址的底层,向上排列. 2.堆