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

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

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

目录

一、封装

1.为什么要封装

2.怎么封装

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

4.封装的一些注意事项

二、访问限定符和包

1.怎么创建包

2.访问限定符

3.包的优点

三、修饰符static

1.static是什么

2.被static修饰后如何访问

3.static修饰方法

4.注意事项

5.static和非static的总结

四、代码块

1.代码块简单概述

2.普通代码块

3.构造代码块

4.静态代码块

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


一、封装

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

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.访问限定符

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

序号封装的范围privatedefaultprotectedpublic
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)而实例化代码块,只有在创造对象时才会被执行


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

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小娥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值