封装、static、代码块~

1.封装的基本知识

1.1 什么是封装

在这里插入图片描述
  首先上面代码定义了一个Date类,类中有三个成员变量yearmonthday和一个printDate成员方法,通过main函数实例化了一个date1对象,date1.分别访问了变量和方法,输出了2024年9月7日

  但如果将成员变量year的访问限定符public改为private,则date1对象就不能访问year成员变量,也无法给year赋值。

在这里插入图片描述
  编译器报错,且提示year 在 Date 中是 private 访问控制,这个行为就叫对year成员变量的封装,意思就是隐藏date1对象中year的属性,仅能在自己的类中使用,别的类不能直接访问。
  当然,可以对类的成员变量封装,也可以对类的成员方法封装,同理将对方法的访问限定符改为private即可。
  那么要是想在别的类中访问year成员变量,就可以在Date类中设置一个对外公开访问的接口,来实现对象的交互,进而访问year
在这里插入图片描述
  我们在Date类中设置了setYeargetYear两个方法,用来设置year的值和获取year,这样在右边Test类中就可以访问setYear进行赋值,用getYear方法获取year的值,这样就能继续打印出2024年9月7日

1.2 为什么要封装

  封装就是为了将内部的实现细节隐藏起来,不对外公开,在自己的类当中访问,仅提供对外公开的接口进行交互,以提高代码的安全性。


2. static

2.1 static有什么用

在这里插入图片描述
  上面代码可以看出,定义学生类,实例化了三个学生对象,但是当他们上课的教室在一起时,给三个学生的教室分别赋值,显得有些冗杂和繁琐。在java中,static关键字,可以修饰类的成员变量,将这个成员变量变为所有对象共享。

2.2 ststic修饰成员变量和方法

在这里插入图片描述
  被static修饰的变量,称为静态成员类成员,它不属于某个具体的对象,而是被所有对象共享。它可以使用类名.来访问,也可以使用对象名.来访问,但更推荐类名访问
修饰成员方法时同理,给成员方法前加上static

public static String getClassRoom(){

  被static修饰的方法,称为静态成员方法,是整个类的方法,不是某个对象特有,并且不能在静态方法中访问非静成员变量。


3.代码块

3.1 代码块的分类

代码块主要分为四类:

  1. 普通代码块
    执行不需要什么条件,可以直接执行。
  2. 构造/实例代码块
    一般用来对实例的成员变量进行初始化。
  3. 静态代码块
    一遍用来对静态的成员变量进行初始化。
  4. 同步代码块
3.2 代码块的运行顺序


  从上面代码可以看出,当我们在右边Test类中实例化对象时,代码块的调用顺序是,静态代码块→普通代码块→构造代码块→构造方法。
  因此一般静态代码块会被优先执行,但是如果有多个对象,静态代码块只会执行一次。


  1. 只要main函数中有执行语句,就会加载Test类,静态代码块就会执行。
  2. 实例代码块只有在创建变量时会被执行
  3. 如果类中什么都没有加载,则不会执行静态代码块

如果类中有多个静态代码块,则根据书写顺序由上到下依次执行,且每个只执行一次。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值