五、Java面向对象:封装
一、成员变量与局部变量的区别
1. 作用域(Scope):成员变量的作用域是整个类,在类的任何地方都可以访问。而局部变量的作用域通常限于定义它的代码块内部,只能在该代码块内使用。
2. 生命周期(Lifetime):成员变量的生命周期与对象的生命周期相同,当对象创建时被初始化,直到对象被销毁。而局部变量的生命周期仅在其定义的代码块执行期间存在,一旦代码块执行完毕,局部变量就会被销毁。
3. 默认值(Default Value):成员变量在声明时会自动被赋予默认值,例如整型变量默认为0,布尔型变量默认为false,引用类型默认为null。而局部变量没有默认值,必须在使用之前进行显式初始化。
4. 访问性(Accessibility):成员变量可以根据访问修饰符的设置来决定是否可以被其他类或者方法访问。而局部变量通常只能在定义它的代码块内部访问。 总之,成员变量具有类级别的特性,可以在整个类中共享和访问;而局部变量具有方法或代码块级别的特性,作用范围较小且生命周期短暂。
.注意:当局部变量与成员变量名字一样的时候,方法内部方法的原则是就近原则,方法内部有就使用方法内部的,如果没有就去成员变量的位置上去查找
二、private,this与static关键字
private(私有的):可以修饰成员变量和成员方法
特点:1、被private修饰的成员在其他类中不能被访问,只能通过公共的方法间接访问
2、在同一个类中,被private修饰的成员可以被随意访问
this:代表的是当前调用该方法的对象
static(静态的):可以修饰成员变量和成员方法,也可以修饰成员内部类
特点:1、是属于类成员,将来调用时,可以直接通过类名的方式进行调用
2、随着类的加载而加载,优先于对象而存在与方法区中的静态区
三、构造方法
创建对象时,调用的是构造方法
什么是构造方法:
1、方法名与类名一样
2、没有返回值类型,甚至连void都不能有
我们之前的案例中并没有写过构造方法,创建对象的时候也不会报错,这是为什么?
注意事项:
1、如果我们没有写构造方法,一个类中在编译的时候会自动提供一个无参无方法体构造方法
2、只要我们自己写了构造方法,无论是否有参数,系统将不会再提供构造方法
3、构造方法也是方法,既然是方法,构造方法也可以发生重载
作用:
1、完成调用并创建对象
2、可以对对象的成员变量进行初始化赋值
给对象成员变量赋值方式
1、通过setXxx()进行赋值
2、通过带参数的构造方法进行赋值
四、new对象时,内存做的事情
1、将class文件加载的方法区中
2、将main方法加载到栈中执行
3、在栈中为局部变量开辟内存空间
4、在堆中为对象开辟内存空间
5、给成员变量进行系统默认赋值
6、代码显示为成员变量赋值
7、构造方法为成员变量赋值
8、将堆内存中对象的地址值赋值给栈中的变量进行引用
五、帮助文档
工具类:构造方法私有化,成员使用static进行修饰
文档注释
使用文档的步骤:1、打开文档,点击索引
2、搜索想要学习的类
3、先看属于哪个包下,除了java.lang包下的类不用导包,其他的类都需要进行导包才能使用
4、看关系
5、看类的介绍
6、看成员(成员变量,构造方法,成员方法)
六、代码块
1、局部代码块:定义在成员方法的内部
2、构造代码块:定义在类中方法外的
3、静态代码块:定义在类中方法外的,需要使用static关键字修饰
4、同步代码块(放到后面的多线程的时候讲解)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!