前言

封装是通过修饰符限制访问权限,隐藏内部实现细节,仅暴露必要功能。包用于组织管理代码,不同包可包含同名类。static修饰的成员属于类而非对象,可通过类名直接访问。静态方法不能访问非静态成员,需实例化对象才能访问。代码块包括静态、实例和普通代码块,执行顺序为静态→实例→构造方法。静态成员初始化可通过就地初始化或静态代码块完成。封装结合限定符是实现信息隐藏的重要手段。

封装

理解什么是封装  怎么样封装   借助修饰符

所谓封装就是使用者不需要知道内部实现原理  只要只要它有什么功能  怎么使用它

而它的内部实现 是通过程序员自己通过修饰符  限制权限  以实现封装

限定符

限定符与封装相结合  是一种手段

限定符使用限定我们在类内外使用   不同子类之间

在使用限定符之前我们先理解包的概念

我们把包类比我们的文件夹  文件夹的作用是文件   区别不同文件的作用   而包 也是  管理代码   让不同的代码 实现对象的不同属性   

包通常建在src里

注  在同一个工程内  不同包之间的类名可以相同

如何在另一个包内如何引入一个包?

imporet 包名.类名

导入静态  imporet static  包名.类名

static

概念

static可以修饰成员变量 成员方法   使非静态的变为静态  全局都可以使用

而静态的不依赖于对象  可以不通过对象  引用  

Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对
象,是所有对象所共享的

特性

1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
可以不通过实例化来访问  通过类名.成员变量
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁

static修饰成员变量

我们访问成员变量有两种方式

1通过类名去访问

2通过对象引用去访问

但是我们在静态方法中推荐用类名去访问    我们在静态方法中想访问非静态的成员变量 或  成员方法  要通过关键字new 来实例化对象 

而在非静态里可以直接访问静态的

静态的不属于对象    不依赖于对象

static修饰成员方法

静态方法特性
1. 不属于某个具体的对象,是类方法
可以不通过实例化   成员方法变为共享
2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
3. 不能在静态方法中访问任何非静态成员变量
在static修饰的方法里不可以借助this访问不被static修饰的成员变量
而非静态方法可以调用静态的方法

static成员变量初始化

static初始化分为就地初始化和静态初始化

就地初始化

在定义的时候直接赋值

使用静态初始化

static{

变量名 =赋值;

}

代码块

代码块分为静态代码块  实例  构造    普通    同步代码块

普通代码块

{

java语句;
}

静态代码

初始化静态变量

static {

java语句;

}

不能进行实例化   不能通过实例访问 

通过类名访问

实例代码块

实例代码块一般也叫构造代码块

修饰符   返回值   名字{

语句;

}

普通代码块

{

java语句;

}

执行先后顺序

当相同代码块时   按先后顺序

不同代码执行先后顺序

先执行静态再执行实例  最后构造方法

在这里面的顺序是先是构造  静态   普通

而出来的是 先静态后实例  再构造方法

打印问题

我们在打印在不同代码块定义一个相同的变量 最终打印的是什么

当在同一个入口方法内   实例化多个对象时静态代码只执行一次

对象的打印

直接打印对象的属性

通过toStrig重写 打印

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐