Java--面向对象三大特征封装
概念
面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外部无法直接操作
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互
好处
1.提高代码复用性
2.控制成员变量操作,提高代码安全性
访问修饰符
1.private 关键字
权限修饰符,修饰成员,被其修饰的成员只能在本类中被访问,在其他类不能被直接使用
针对private修饰的成员变量 若要访问则需要提供对应的get ,set方法实现对隐藏信息的操作和访问用public修饰(idea中通常用快捷键Alt+Insert)set:赋值,get:访问
注意:父类中private的成员变量虽然在子类中不能直接访问,但也继承到子类了,由于我们需要进行的是封装只暴露必要的信息给类的调用者,因此我们在使用的时候尽可能使用比较严格的访问权限,能使用private关键字就不要使用public关键字
2.public关键字
this关键字(解决局部变量和成员变量重名)
1.this限定的变量指代于成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
方法的形参如果没有与成员变量同名,不带this修饰的变量指的是成员变量
2.什么时候使用this呢?解决局部变量隐藏成员变量
3.方法被哪个对象调用,this就指的是哪个对象
static关键字
1.修饰成员变量
2.修饰成员方法
3.静态块(static)修饰的成员变量首先被初始化
4.静态导包
final关键字(修饰变量、成员方法以及类)
1.修饰变量或字段,表示常量(即不能修改)
finalinta=10;
a=20; //编译出错
2.修饰类:表示此类不能继承
final public class Animal {
...
}
public class Bird extends Animal {
...
}
// 编译出错
Error:(3, 27) java: 无法从最终com.bit.Animal进行继
我们平时是用的 String 字符串类, 就是用 final 修饰的, 不能被继承
jar包
jar
包(Java Archive)是 Java 平台上用于打包多个类文件、相关元数据和资源文件(如文本、图片等)的一个文件,这些文件被压缩成一个 .jar
文件。它主要用于分发 Java 应用程序或库。jar
文件可以通过 Java 的 java
和 jar
命令来运行或操作。
jar 包的主要用途
- 分发:将应用程序或库的所有必要组件打包成一个文件,便于分发和部署。
- 安全性:可以对
jar
包进行签名,以确保其内容的完整性和来源的可信度。 - 封装:将 Java 类、元数据、资源等封装在一个文件中,隐藏内部实现细节。
- 可移植性:由于 Java 是跨平台的,所以
jar
包也具备跨平台的特性,可以在任何支持 Java 的系统上运行。
创建 jar 包
可以使用 jar
命令或集成开发环境(IDE)如 Eclipse、IntelliJ IDEA 等来创建 jar
包。以下是一个使用 jar
命令创建 jar
包的示例:
bash复制代码
jar cvf MyApplication.jar -C bin/ .
c
表示创建新的归档文件。v
表示在创建归档文件时生成详细输出。f
指定归档文件的名称。MyApplication.jar
是要创建的jar
文件的名称。-C bin/ .
指定将bin/
目录下的所有文件和目录(.
表示所有)添加到jar
文件中。
运行 jar 包
如果 jar
包是可执行的(即包含一个主类,并在其 MANIFEST.MF
文件中指定了该主类),则可以使用 java -jar
命令来运行它:
bash复制代码
java -jar MyApplication.jar
注意事项
- MANIFEST.MF:
jar
包的清单文件(MANIFEST.MF
),它位于META-INF/
目录下。这个文件可以指定主类、类路径、密封的包等。 - 安全性:在分发
jar
包时,考虑对其进行签名,以确保其内容的完整性和来源的可信度。 - 依赖管理:如果
jar
包依赖于其他库,则这些库也需要被正确地打包或提供给运行环境。在 Java 9 及更高版本中,可以使用模块系统(JPMS)来管理依赖。
jar
包是 Java 开发中不可或缺的一部分,它极大地简化了 Java 应用程序和库的分发和部署过程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)