Java中的类和对象(2)

1.封装的概念

将数据和操作数据的方法进行有机结合,隐藏对象的实现属性和细节,仍公开接口来和对象进行交互。

2.访问修饰限定符的访问权限

private - 同一包中的同一类

default - 同一包中的不同类,需要注意的是default不是一个修饰类成员属性/方法的关键字,类中成员属性/方法前面什么都不写,即表示default权限

protected - 不同包中的子类

public - 不同包中的非子类

访问修饰限定符的权限里面提到了包,根据是否为同一包确定权限范围,那么包是什么?

包可以简单理解为文件夹,如下图:

同类当中,private修饰的成员属性是能够被访问修改的,如下图:

不同类当中,private修饰的成员属性不能够被访问修改,如下图:

如果Test4改成default权限,则能够被访问,如下图:

protected修饰的属性,不同包的子类可以访问,如下图:

至于public权限最宽松,不同包中的非子类也能够访问,这里就不演示了。

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

那么被private修饰的成员属性该如何初始化或者使用呢?通常使用成员方法来初始化或者使用,如下图:

3.软件包

为了更好得管理类,将多个类放在一起成为一组,称为软件包。如上面提到的,可以简单理解为文件夹。

想要使用其它软件包某些类中的成员方法,就需要导入包中的类,如下图:

同理,使用java提供的工具类时,也需要先进行导入,才能使用。

4.static关键字

在Java中,static只能修饰成员属性/方法,不能修饰局部变量,如下图:

static修饰局部变量,语法会报错。

static修饰的成员属性/成员方法,是所有对象共享的,不属于某个具体的对象。因此该成员属性/方法不依赖于具体的对象,不依赖于类的实例化。因此静态成员属性/方法不能通过this调用。

静态成员的访问方式:可以通过类名访问或者通过对象访问,因为静态成员属性/方法是不依赖对象的,因此更推荐使用类名访问,如下图:

在非静态方法中调用静态方法,注意使用类名调用:

在静态成员方法中调用非静态成员方法,注意要先实例化:

静态成员方法中千万不能使用this,因为静态方法不依赖于对象,而this则代表对象,强行调用会出现错误,如下图:

5.实例代码块与静态代码块

实例代码块 - 定义在类中的,不加修饰的代码块,也叫构造代码块,用于初始化实例成员属性;

静态代码块 - 使用static 修饰的代码块,一般用于初始化静态成员属性;

如果类中分别定义了实例代码块与静态代码块,那么谁先执行谁后执行呢?如下图:

根据运行结果,我们可以知道实例化时,先执行静态代码块,再执行实例代码块。

那构造方法和代码块谁先执行呢?如下图:

根据运行结果,我们可以知道实例化时,先执行静态代码块,再执行实例代码块,最后执行构造方法;

注意:静态代码块,不管实例化多少对象,都只会被执行一次,如下图:

虽然实例化了两个对象,但是静态代码块只执行了一次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值