-
2021-03-10 04:14:08
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
java 封装,说白了就是将一大坨公共通用的实现逻辑玩意,装到一个盒子里(class),出入口都在这个盒子上。你要用就将这个盒子拿来用,连接出入口,就能用了,不用就可以直接扔,对你代码没什么影响。
对程序员来说,使用封装的目的:
1.偷懒,辛苦一次,后面都能少敲很多代码,增强了代码得复用性
2.简化代码,看起来更容易懂
3.隐藏核心实现逻辑代码,简化外部逻辑,并且不让其他人修改,jar 都这么干
4.一对一,一个功能就只为这个功能服务;避免头发绳子一块用,导致最后一团糟
更多相关内容 -
java常用工具类封装
2020-09-14 15:39:16java常用工具类封装,线程池、elasticsearch高级客户端集成、word,pdf,excel等文档解析 -
java分页类封装
2018-09-12 22:46:38跟我上面的java底层简易封装配套的。有需要的也可以学习下。 -
java自定义封装StringUtils常用工具类
2020-08-27 19:34:39主要为大家详细介绍了java自定义封装StringUtils常用工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
JAVA——封装
2022-04-18 23:11:38代码要笑着写——深度剖析内部类的那些秘密……一、封装的概念
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互.
- 面向对象程序三大特性:封装,继承,多态.
- 通俗来说,封装就是套壳屏蔽细节.比如:一个电脑真正工作的是CPU,显卡等硬件,而用户只是通过鼠标和键盘等设备来和计算机进行交互.
二、访问修饰限定符
加粗样式用于控制成员变量和方法的访问权限 , Java中提供了四种访问限定符:
- public:哪里都可以使用.
- default: 只能在同一个包中使用.
- private:只能在自己的类中使用.
三、封装扩展之包
3.1 包的概念:
为了更好的管理类,把多个类收集在一起成为一组,称为软件包.通俗来说,其实就是一个文件夹.
3.2 包的作用:
在同一个项目中如果想要定义相同名称的类,只要位于不同的包中即可.3.3 自定义包:
操作步骤:
第一步 : 右键 src -> New -> 包(Package):
第二步 : 对话框中输入包名, 例如:
第三步 : 最后我们打开磁盘上的文件路径, IDEA 就自动创建出来了:
四、 内部类(难点)
内部类也是封装的一种体现:
4.1普通内部类
概念: 未被static修饰的成员内部类。
class OutClass { private int a; static int b; int c = 30; public void methodA() { a = 10; System.out.println(a); } public void methodB() { b= 20; System.out.println(b); } // 普通内部类 class InnerClass { char c; public void methodInner() { a = 100; b = 200; methodA(); methodB(); c = 97; //优先使用自己 System.out.println(c); System.out.println(OutClass.this.c); //要想访问外部的,外部类名.this } } } public class Test2 { public static void main(String[] args) { OutClass outClass = new OutClass(); //创建外部类对象 OutClass.InnerClass innerClass = outClass.new InnerClass(); //结论 innerClass.methodInner(); } }
【注意事项】
1. 外部类中的任何成员都可以在普通内部类方法中访问 .
2. 在普通内部类方法中访问同名的成员时,优先访问自己的.
3. 普通内部类对象必须在先有外部类对象前提下才能创建 .4.2静态内部类
概念:被static修饰的内部成员类称为静态内部类.
class OutClass { private int a; static int b; //默认 public void methodA() { a = 10; System.out.println(a); } public static void methodB() { System.out.println(b); } // 静态内部类 static class InnerClass { public void methodInner() { // a = 10; 不能使用非静态的成员变量或方法 b = 20; System.out.println(b); methodB(); } } } public class Test3 { public static void main(String[] args) { OutClass.InnerClass innerClass = new OutClass.InnerClass(); //不需要创建对象 innerClass.methodInner(); } }
【注意事项】
1. 在静态内部类中只能访问外部类中的静态成员 .
2. 创建静态内部类对象时,不需要先创建外部类对象,使用类名即可访问.
与君共勉 : 青春有几年,疫情占三年,去做自己喜欢的事吧.
-
Java 八种基本类型和基本类型封装类
2020-08-29 10:08:49八种基本数据类型分别是:int、short、float、double、long、boolean、byte、char;下面跟随脚本之家小编一起学习java八种基本类型和基本类型封装类 -
Java数据库操作封装类
2017-07-09 09:33:08Java数据库操作封装类,借鉴了各个主流类库的思路。 -
Java jdbc连接mysql 封装类
2019-05-26 15:50:24Java jdbc连接mysql 封装类 开发工具与关键技术:java、 myelipse2017、jdk1.8 作者:Amewin 撰写时间:2019年5月26日 JDBC简介: JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的...Java jdbc连接mysql 封装类
开发工具与关键技术:java、 myelipse2017、jdk1.8 作者:Amewin 撰写时间:2019年5月26日
JDBC简介:
JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的简称。
他是sun公司和数据库开发商共同开发出来的独立于DBMS的应用程序接口,它为java程序员进行数据库编程提供了统一的API。DBUtil 封装类
网上有很多的封装类,但总是是或多或少,不够完整。
比如 数据库连接信息不够安全。没有放入配置文件中,构造器没有私有化。代码示例
import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; /** * mysql jdbc 数据库连接示例 * * @author CGR * */ public class DBUtil { private static String username;//数据库登陆账号 private static String password;//数据库登陆密码 private static String url;//数据库 url 及端口 private static String driver;//驱动类 //通常情况下把数据密码放置 项目配置文件中 , 相对于放入类中,更安全一些。 static { //静态初始化块 //创建获取配置文件对象。 Properties properties = new Properties(); try { //利用反射获取对应的字段 InputStream in = DBUtil.class.getClassLoader() .getResourceAsStream("jdbc.properties");//获取创建好的配置文件名 properties.load(in); username = properties.getProperty("username"); password = properties.getProperty("password"); url = properties.getProperty("url"); driver = properties.getProperty("driver"); //加载驱动类 Class.forName(driver); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 私有化构造器,防止用户重复创建对象,造成资源浪费。 */ private DBUtil(){ } /** * 定义一个Connection类型的变量用来存储获取到的Connection实例化对象 */ private static Connection con; //创建数据库连接对象 public static Connection getConnection() { try { con = DriverManager.getConnection(url, username, password); } catch (SQLException e) { e.printStackTrace(); } return con; } //关闭对应数据流 public static void close(Connection con, PreparedStatement ps, ResultSet rs) { //关闭流原则,先创建后关闭 if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
创建配置文件
打开elipse 2017 配置 在项目根目录下,ctrl + N
新建一个text 文本
然后
driver=com.mysql.jdbc.Driver
username=root
password=root
url=jdbc:mysql://localhost:3306/test02基本配置数据信息
driver=com.mysql.jdbc.Driver
username=root
password=root
url=jdbc:mysql://localhost:3306/test02然后保存
test02 是数据库名
root mysql数据密码选中文件 按F2 重新命名成 尾缀为properties 的配置文件
-
java常用工具类的封装jar
2017-09-06 16:11:58并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,... -
java 连接elasticSearch封装的工具类
2018-07-19 10:52:47java连接elasticSearch的工具类,只需要传入两个参数 一个是节点名称,一个是ip地址即可返回对象Client -
Java实现Http工具类的封装操作示例
2020-08-28 07:56:58主要介绍了Java实现Http工具类的封装操作,涉及java针对http请求与响应、远程交互与字符串拼接等操作封装技巧,需要的朋友可以参考下 -
RabbitMQ工具类封装实现
2019-10-26 14:08:05封装了RabbitMQ的订阅者线程和发布者线程(还有个初始化工厂的连接工具类),另外附加一个安卓的使用demo -
java中封装类(一)
2021-03-16 20:05:18java中封装类共九个,分别是Boolean,Byte,Short,Integer,Long,Float,Double,Character,Void其中Void对于使用者并无多大意义,也不可以构造任何对象,代码如下:packagejava.lang;public final classVoid {public ...java中封装类共九个,分别是Boolean,Byte,Short,Integer,Long,Float,Double,Character,Void
其中Void对于使用者并无多大意义,也不可以构造任何对象,代码如下:
packagejava.lang;public final classVoid {public static final Class TYPE = Class.getPrimitiveClass("void");privateVoid() {}
}
View Code
这几个封装类中,以Boolean类型最简单,Character最复杂,Character个人觉得也是整个java中最复杂的一个类,先说Boolean:
packagejava.lang;public final class Boolean implements java.io.Serializable,Comparable{public static final Boolean TRUE = new Boolean(true);public static final Boolean FALSE = new Boolean(false);public static final Class TYPE = Class.getPrimitiveClass("boolean");private final booleanvalue;private static final long serialVersionUID = -3665804199014368530L;public Boolean(booleanvalue) {this.value =value;
}publicBoolean(String s) {this(toBoolean(s));
}public static booleanparseBoolean(String s) {returntoBoolean(s);
}public booleanbooleanValue() {returnvalue;
}public static Boolean valueOf(booleanb) {return (b ?TRUE : FALSE);
}public staticBoolean valueOf(String s) {return toBoolean(s) ?TRUE : FALSE;
}public static String toString(booleanb) {return b ? "true" : "false";
}publicString toString() {return value ? "true" : "false";
}public inthashCode() {return value ? 1231 : 1237;
}public booleanequals(Object obj) {if (obj instanceofBoolean) {return value ==((Boolean)obj).booleanValue();
}return false;
}public static booleangetBoolean(String name) {boolean result = false;try{
result=toBoolean(System.getProperty(name));
}catch(IllegalArgumentException e) {
}catch(NullPointerException e) {
}returnresult;
}public intcompareTo(Boolean b) {return compare(this.value, b.value);
}public static int compare(boolean x, booleany) {return (x == y) ? 0 : (x ? 1 : -1);
}private static booleantoBoolean(String name) {return ((name != null) && name.equalsIgnoreCase("true"));
}
}
View Code
Boolean实现了Comparable接口,也就是说boolean类型本身是可以比较的,而对于boolean类型而言,在java中认为true是大于false的。示例如下:
packagedemo.nio;public classBooleanDemo {public static voidmain(String[] args){
System.out.println(Boolean.compare(true, false));//1 代表大于
System.out.println(Boolean.compare(false, false));//0 代表等于
System.out.println(Boolean.compare(true, true));//0 代表等于
System.out.println(Boolean.compare(false, true));//-1 代表小于
}
}
值得一提的是Boolean的hashcode是两个常数,这就保证了不管从何处new的对象,只要内部的value字段值为true,它的hashcode就是1231,为false就是1237。equals方法完全调用了内部value字段的==操作。所有的封装类型都包含了valueOf的静态函数,并且有
两个重载版本,分别是基元类型参数和字符串参数。还有一个parse函数,内部可以通过返回Cache中的数据来避免重复的装箱操作。java中对于Boolean的Cache就是 Boolean.TRUE和Boolean.FALSE两个静态字段。它们是公共类型。
public classBooleanDemo {public static voidmain(String[] args){
Boolean b3= Boolean.valueOf(true);
Boolean b4= Boolean.valueOf("true");
Boolean b5= Boolean.parseBoolean("true");
}
}
View Code
-
java语言中封装类代码示例
2020-08-28 09:04:34主要介绍了java语言中封装类,涉及相关代码示例及结果分析,以及封装的好处简单介绍,具有一定借鉴价值,需要的朋友可以参考下 -
jsp页面分页操作,用java类封装,页面直接调用对象显示
2010-01-08 21:11:15把在页面上的分页操作,在java类用一个对象封装,并且把整个分页的html标签封装在这个对象的String类型的属性里,在需要分页的地方,直接从后台取得这个对象,并把对象中的字符串用页面的内置out对象写到页面上,... -
java增删改查JDBC封装类(泛型封装)
2019-02-28 16:10:07java增删改查JDBC封装类(泛型封装),这个是高度封装化的,增删改查,直接用到我的项目中去的。 -
请求返回数据封装类
2019-04-23 20:39:23该代码封装了网络请求的返回数据用于返回前段 -
Java封装AESUtil类
2018-06-21 11:54:10AESUtil Java封装类 AES加密工具类,其中导入的jar包jdk引进去就可以用了,jdk的版本尽量大于1.5 -
Java Logger Logging 封装
2015-07-03 12:14:32Java日志实现。对java.util.logging.Logger的封装,在前人(原文件来自网络)的类上完善了文件的控制,使得日志文件可以重入。 -
Java:类的封装
2019-05-12 21:11:33下面以一个员工类的封装为例介绍封装过程。一个员工的主要属性有姓名、年龄、联系电话和家庭住址。假设员工类为 Employee,示例如下: public class Employee { private String name; //姓名 private... -
阿里发送短信封装类(AliyunSmsUtils.java、亲测可用)
2020-02-13 19:46:05阿里发送短信封装类(AliyunSmsUtils.java)其中工具类中有很多需要替换的地方,阿里发送短信封装类(AliyunSmsUtils.java)阿里发送短信封装类(AliyunSmsUtils.java) -
Elasticsearch的JAVA操作工具类,包括增删改查的封装
2017-09-13 17:29:52Elasticsearch的JAVA操作工具类,包括增删改查的封装,Elasticsearch的JAVA操作工具类,包括增删改查的封装 -
java响应实体类封装
2020-06-11 10:24:49前后端分离的开发模式中,或者与第三方接口交互,需要规范接口响应,下面是我在开发中的封装的一组响应实体类 -
java怎么封装封装_用Java封装
2020-07-17 23:44:52java怎么封装封装 什么是封装? (What is Encapsulation?) Encapsulation is one of the ways to achieve abstraction in Object-oriented programming. 封装是在面向对象编程中实现抽象的方法之一。 It’s one of ... -
java各种常用的工具类封装 源码
2013-08-13 18:04:48dateUtil fileUtil propertyUtil 反射 json 分页 jdbc struts2 string 一些java开发 常用的工具类的总结 封装 -
Java类和封装学习心得(1)
2016-02-27 21:24:41Java中有类,方法和对象的定义。类是对现实中具体事物的描述,类中应该有描述该事物属性的对象,也有描述该事物运行方式的方法。这些一起组成了一个类,类通过封装变得完整且安全,外部的方法想要修改类中的内容,... -
Java封装一个类怎么实现?
2021-02-12 17:32:05封装将某些东西包装在一起,然后以新的完整形式呈现出来;隐藏属性、方法或实现细节的处理方式称为封装;...使用已经定义好的类,创建该类对象的过程称为“实例化”。在C语言中,必须要先声明结构体变量,才可... -
echarts-java类库封装
2018-01-23 17:59:50echarts java 类库封装 echarts java 类库封装 echarts java 类库封装 -
httpRequest封装工具类
2019-03-18 09:51:28通过对httpRequest进行封装,可以更好的使用这个请求的方法。包括常用的post,get请求和结果的处理