【Java】/*类和对象(中)*/

发布于:2024-05-23 ⋅ 阅读:(150) ⋅ 点赞:(0)

目录

​编辑

一、封装

1.1 初识封装

1.2 如何封装成员变量 

1.3 如何使用封装后的成员变量

二、访问限定符

三、包

3.1 包的概念

3.2 如何自定义包

3.3 导入包中的类

3.4 包的访问权限控制举例

示例一:private修饰成员变量

示例二: 不去修饰成员变量

示例三:public修饰成员变量

注意:

3.5 常见的包


一、封装

1.1 初识封装

1. 面向对象编程有三大特性:封装、继承、多态。

2. 在类和对象阶段,主要研究的就是封装特性。

3. 封装就相当于套上一层壳子屏蔽细节。这就好比像电脑这样一个复杂的设备,对于计算机使用者而言,不用关心内部核心部件,例如主板上线路是如何布局的,CPU内部是如何设计的等,用户只需要知道,怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。

4. 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互

1.2 如何封装成员变量 

1. 做法:用private修饰成员变量。

2. 注意:修饰后的成员变量只能在当前类中使用。

1.3 如何使用封装后的成员变量

1. 做法:在类中给每个被private修饰的成员变量定义用public修饰的"set"、"get"方法,用于提供可对成员变量赋值和得到的接口。补充:private是私人的意思。

2. 工具:编译器提供了可以快速生成"set"、"get"方法的开发工具,具体操作如下图。

尝试使用一下这些"set"、"get"方法:

二、访问限定符

1. Java中主要通过类和访问权限来实现封装。类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:

2. ① protected主要是用在继承中,继承部分详细介绍。

    ② 空权限指默认权限,这里的默认权限指的是包访问权限,即没有被任何访问修饰限定符修饰的成员变量和成员方法,它只能在同一个包中的Java文件中使用。

    ③ 访问权限除了可以限定类中成员的可见性,也可以控制类的可见性。

三、包

3.1 包的概念

1. 在日常生活中你的U盘中有很多歌曲,为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。例如下图:我们可以把众多歌曲先按照歌曲类型分为4个大的文件夹,在每个大的文件夹下又可以按照歌曲属于哪个歌手分为一些小的文件夹。

同样在Java中如果你有很多的Java文件,对它们在电脑中进行管理我们也会去使用文件夹,文件夹在Java中又被称为包(每个文件夹都有属于自己的路径,即每个包都有属于自己的路径。路径不同,所属于的包就不同)。

2. 特点:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可

3.2 如何自定义包

src是ideal默认的一个工程包。

自定义包的包名:① 全部小写 ② 一般情况下是域名的逆置写法,例如:www.baidu.com,会写成com.baidu.www(这里相当于我们创建了三个包)

 设置好自定义包后,表现形式一般为下列两种,一般会采用第二种表现形式。

更改成第二种表现形式的设置步骤如下: 

下图中创建的两个名叫Student的Java文件并不冲突,因为一个是在com.baidu.www包下,另一个是在src包下。下面的图片2中,scr\代表scr包下的Student.java文件,www\代表www包下的Student.java文件。

 

下图中用红色方框框起来的两个Student的Java文件也是不冲突的,因为第一个是在com.baidu.www包下,另一个在com.baidu.www2包下。

 

在自定义的包中建立的Java文件的第一行都会有一个package + 包名,这句代码的意义是声明包的路径,例如:下图中第一行带码代表当前这个Java文件在包com.baidu.www下。如果Java文件是直接定义在默认的包src下则Java文件的第一行是不会有package语句的。

3.3 导入包中的类

写法一:采用导入包的形式(一般采用这种形式)

 写法二:不导入包的形式

当我们想要使用一个包中的多个类时,可以将导入包的格式写成,例如:import java.util.*,这里的*表示通配符的意思。这种写法表示"导入"了某个包中所有的类,这里的导入在Java中是你用到谁才会导入谁

虽然有上面这种简化的格式,但是仍然建议显示的指定要导入的类名,否则会很容易出现冲突的情况。 例如:下图中,java.util底下和java.sql底下都有Date这个类,当我们同时导入java.util.*和java.sql.*并且在main方法中在使用Date类时,编译器懵了不知道到底去使用哪个包中的Date类。

上面情况的解决方法是: 

我们还可以使用import static导入包中静态的方法和字段,这样可以使得在使用某个类中的方法时,不用写类名直接调用方法 (这种写法的可读性非常差,不要使用!)

注意事项: import 和 C++ 的 #include 差别很大. C++ 必须 #include 来引入其他文件内容, 但是 Java 不需要. import 只是为了写代码的时候更方便,import 更类似于 C++ 的 namespace 和 using。

3.4 包的访问权限控制举例

示例一:private修饰成员变量

如下图,我们在scr\路径下创建了Student和test01,private的作用是使得被修饰的只能在自己的类中使用,因此我们在test01Java文件中使用Student类创建的对象时,会报错。

示例二: 不去修饰成员变量

如下图,我们在scr\路径下创建了Student,在com.baidu.www创建了test02,没有被任何访问限定符修饰的成员变量,只会有包访问权限,因此我们在test02Java文件中使用Student类创建的对象时,会报错。

示例三:public修饰成员变量

只要导入包后,在哪里都能使用。(这里就不详细举例了)

注意:

一般情况下成员变量设置为private,成员方法设置为public。

3.5 常见的包

1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。

2. java.lang.reflect:java 反射编程包;

3. java.net:进行网络编程开发包。

4. java.sql:进行数据库开发的支持包。

5. java.util:是java提供的工具程序包,(集合类等) 非常重要。

6. java.io:I/O编程开发包。

  本篇文章已完结,谢谢支持哟 ^^ !!!


网站公告

今日签到

点亮在社区的每一天
去签到