看似封装,其实不止于封装?

简介: 看似封装,其实不止于封装?

本文介绍的也不只是封装,包含零零散散的知识点。其中,主要介绍封装、包和访问限定符、static、代码块

提示:使用PC端观看,效果更佳!



一、封装

封装是作为面向对象语言之一的特征,下面我们一起来认识

1.为什么要封装

(1)什么是封装

洗衣机举例

  • 如我们使用的洗衣机,我们只需要会开关鸡,调节一些选项(洗衣温度和时间等),放洗衣粉或洗衣液即可。
  • 内部的细节,如洗衣机怎么运转,怎么脱水等,不需要我们知道
  • 用一些手段把内部细节隐藏起来(如套上外壳),这就是封装的思想

(2)为什么要?

例如我们使用的电脑,用户更多关心的是外观,才不会在意内部零件的颜值和长相是怎么样的,也不想看到,所以厂家就会使用电脑壳将内部的细节给封装起来,这就是封装。

我们Java的类中也需要这样的做法,用来屏蔽一些内部功能实现的细节。

2.怎么封装

(1)使用关键字:private

(2)示例:一般都是public和private的相互选择

class Dog {
    public String name;//没有进行封装
    private int age;//使用了private进行了封装
}
public class Test2 {
    public static void main(String[] args) {
    }
}

3.怎么访问被封装的数据

(1)封装前后的访问

可以直接使用对象的引用直接访问到对象中被public修饰的成员变量,却访问不到被private修饰的age

(2)提供对外公开的接口

1)做法

第一步:鼠标右键或者Alt+Ins

第二步:点击框框中的

第三步:点击

第四步:生成了以下的代码

调用get接口可以得到改成员变量的值;调用set接口则是可以给该成员方法赋值

(3)使用以上的接口

1)给private修饰的成员变量赋值

2)获得该成员变量的值

以上就是基本的访问方式

4.封装的一些注意事项

(1)我们是推荐:成员变量使用private封装,而成员方法对外开放

(2)使用封装时,要根据实际情况去设计,而不是滥用

二、访问限定符和包

包可以说是一种文件夹,一个包里面可以有很多个类

1.怎么创建包

(1)包是啥?

下面的图样就是包的样子

(2)创建包

第一步:找到建包的入口

第二步:输入名字(包的阶级用点号隔开,位于后面的级别较高)

第三步:形成三级目录

这样,三个包就创建好了。我们可以在不同包下创建类

2.访问限定符

下面是一些修饰符,在这里只介绍两个

序号 封装的范围 private default protected public
1 同一包中的同一类
2 同一包中的不同类
3 不同包中的子类
4 不同包中的非子类

(1)private

被这个修饰的字段,只能在同一个类中直接访问;一个包中的不同类,需要通过接口访问

(2)public

这个修饰符不用过多介绍,在任何地方都可以被访问到

3.包的优点

(1)合理创建包,可以更好的管理类和分类

(2)包是对类、接口等封装机制的体现

(3)一个包中的类可以防止被其他包使用

(4)在不同的包中,可以存在相同的类名

三、修饰符static

同样是修饰符,但是static和像public的修饰符不是一类,他们可以一起使用,但是static是用来修饰成员变量或者成员方法的,存在于类中

1.static是什么

(1)static是用来修饰成员变量和方法的,称为静态的

(2)长什么样?

2.被static修饰后如何访问

(1)未被修饰的

在对象中,找不到被static修饰的classId变量

(2)作用机制

1)被static修饰的成员变量和成员方法,不属于对象,而是属于类

2)被static修饰的变量和普通的成员变量位于内存中的不同区域

3)静态成员变量和方法也被称为类变量和类方法

(3)如何访问

因为不属于对象而是属于类,所以访问可以不借助对象来访问,可以直接通过类来访问。

1)类名直接访问

2)对象引用访问(不推荐,但是会警告)

3.static修饰方法

(1)示例

(2)访问

(3)互访机制

1)静态方法中不可以访问非静态的

2)非静态中可以访问静态的

一个不需要对象的,不能调用需要对象的;反之可以

4.注意事项

(1)在static修饰的方法中,不能出现非静态成员变量和成员方法

(2)在static的方法中,不能出现this。this后面一般都要跟着对象

(3)

5.static和非static的总结

(1)成员变量分为:静态成员变量和非静态成员变量/普通成员变量;同样,成员方法分为:静态成员方法和非静态成员方法。

(2)静态成员变量:属于类的,只有一份;类名+点号来访问静态成员变量

(3)非静态成员变量/普通成员变量:属于对象的,每实例化一个对象,都会存在一份;通过对象的引用+点号来访问

(4)静态的成员变量  随着类被加载而创建。类被销毁而销毁

四、代码块

本节讲述三种代码块,下面跟我一起了解

1.代码块简单概述

(1)代码块一共有这四种:普通代码块、构造代码块、静态代码块和同步代码块,但是同步代码块在目前阶段是不会接触到的,所以这里不做讲解。

(2)什么是代码块

一般使用花括号({})括起来的部分称为代码块,又根据代码定义的位置和使用的关键字,就可以将代码块分类,也就是上述的四种。

2.普通代码块

(1)一般定义在方法中的代码块,就是普通代码块,用法较少

(2)样式

1)

2)

(3)局限性

括号中的变量只能在代码块内部使用,出了作用域就不存在

3.构造代码块

(1)构造代码块,又称为示例代码块。定义在类中

(2)作用:用于给类中的成员变量初始化

(3)示例:

运行结果:

4.静态代码块

(1)使用static关键字定义的代码块称为静态代码块

(2)作用:用于初始化静态成员变量(类变量)

(3)示例:

运行结果:

5.两种代码块的执行顺序

上述对代码块有了初步的认识,下面针对实例代码块、静态代码块、构造方法进行比较,实例、静态和构造分别在父类和子类中的执行顺序。

(1)实例代码块、静态代码块和构造方法的执行顺序

执行顺序展示:

由此可知:静态代码块>实例代码块>构造方法

(2)分别在父子类中比较

执行顺序展示:

静态代码块一定是最先被执行的。

(3)静态代码块执行次数

结果展示:

(4)多个静态代码块

1)赋值

结果:

前面的结果会被覆盖掉

2)其他

结果:

(4)关于静态代码块的小结

1)无论实例化多少次对象,静态代码块都只会被执行一次

2)类变量是在JVM加载类时,就已经被初始化好了

3)多个静态代码块,在编译时,会将其合并。后面的会将前面的覆盖

4)而实例化代码块,只有在创造对象时才会被执行


本期的代码到这里就全部结束了,欢迎补充留言……

相关文章
|
11月前
|
Java 编译器 数据安全/隐私保护
【Java面向对象编程(中)】- 探索封装的秘密
【Java面向对象编程(中)】- 探索封装的秘密
64 0
|
6月前
|
存储 Java 编译器
Java面向对象之——封装
Java面向对象之——封装
|
6月前
|
C++
C++ 数据封装的方法,重点是其编程思想
在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现
62 7
|
6月前
|
C++
C++ 接口的实现,及作用通俗理解方式
C++中的接口,一般就是指抽象类,是一种用来描述类对外提供的操作、方法或功能的集合——注意,一般只是描述(声明),而不对这些方法或功能进行定义实现,通常在
66 2
|
测试技术 C++
c++学习之mystring的简单封装
c++学习之mystring的简单封装
122 0
|
网络协议 程序员 网络架构
数据封装与解封装过程
数据封装与解封装过程
246 0
|
Java
【Java面向对象】封装的认识与实现
【Java面向对象】封装的认识与实现
85 0
|
Java
Java面向对象封装
封装的概念 Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。 封装具体实现步骤 1、声明类的成员变量时,使用private关键字进行修饰,将变量设为私有属性(只能在类的内部访问)。 2、为每个私有属性提供getter和setter方法,用来读取和修改私有属性。 3、getter方法用于获取私有属性的值,setter方法用于设置私有属性的值。在方法内部,可以添加一些控制语句用于
73 0
|
Java
Java面向对象基础2——封装
简单来说,封装就是正确地设计对象的属性。要注意的是,对象代表什么,就封装对应的数据,并提供数据的对应行为
104 0
Java面向对象基础2——封装