Java 类和对象
![832e0df13c1bab246a4a7552b0b938e6.png](https://i-blog.csdnimg.cn/blog_migrate/ba2d8b62b7fde706cf2e34cee75cf4d8.jpeg)
基本概念
Java作为一种面向对象语言。支持以下基本概念:多态、继承、封装、抽象、类、对象、实例、方法、消息解析。
本节我们重点研究类和对象的概念。
- 1、类:类是一个模板,它描述一类对象的行为和状态。
- 2、对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类与对象的理解
概念是很抽象的,我们这边用一个具体的例子说明一下类和对象。
比如:一个大人名字大王,和一个小孩名字小王。我们可以抽象出一个人的类,两个人的对象。
类的生命周期
java源文件编译成的class字节码文件,在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程。
![327d4cc9ad06bd2f1bea451c64908b46.png](https://i-blog.csdnimg.cn/blog_migrate/77e79ca24962a639ae9b69c9fd41a26d.jpeg)
- 1、加载:找到需要加载的类并把类的信息加载到jvm的方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。Ps:日常我们说的类加载——指的是类的生命周期中加载、连接、初始化三个阶段。
- 2、连接:连接阶段比较复杂,一般会跟加载阶段和初始化阶段交叉进行,这个阶段的主要任务就是做一些加载后的验证工作以及一些初始化前的准备工作。
- 3、类的初始化:按照顺序自上而下运行类的变量赋值语句和静态语句。而没有static修饰的赋值语句和执行语句在实例化对象的时候才会运行。所以,java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。非静态变量叫做实例变量,它开始于类的实例的创建,结束语类的实例的消亡。
- 4、使用:当初始化完成之后,java虚拟机就可以执行Class的业务逻辑指令,通过堆中java.lang.Class对象的入口地址,调用方法区的方法逻辑,最后将方法的运算结果通过方法返回地址存放到方法区或堆中。类的使用包括主动引用和被动引用。主动引用会引起类的初始化eg:通过new关键字实例化对象、读取或设置类的静态变量。被动引用不会引起类的初始化eg:定义类数组、引用类的常量。
- 5、卸载:当对象不再被使用时,java虚拟机的垃圾收集器将会回收堆中的对象,方法区中不再被使用的Class也要被卸载,否则方法区(Sun HotSpot永久代)会内存溢出。类的卸载过程其实就是在方法区中清空类信息。
Java中的类
类的入口 main 方法
main 方法入口是Java的规范,没为什么记录怎么写如下:
![aa564049f115d10ae43d2d8e944ff58f.png](https://i-blog.csdnimg.cn/blog_migrate/d1cb5196f8c6bc5ae9fccb2a1eb576ed.jpeg)
解析Java 规范 public static void main(String[] args)
- 访问控制权限:public
- 静态的:static
- 返回值:void
- 方法的参数:字符串数组参数
不管你是自己用记事本写,还是有IDE生成。运行就从这个main开始,还固定不变。
类的结构
见下面例子说明:
![577d887e457095c778d438a70670b480.png](https://i-blog.csdnimg.cn/blog_migrate/4574674e625d268d99b3d740ef3c7b3c.jpeg)
希望我的分享可以帮助到你,如果你在内容技术上遇到难题,可以+关注■@主引教程 ,反馈给我们。我们会及时回复,如果有那些内容有误可以直接提出来,我们会及时纠正,谢谢来访。