什么时候会类加载
(只会发生一次)
如何验证只会发生一次
证明静态变量会在类加载的时候初始化
证明非静态变量不会在类加载的时候初始化
1.访问类的静态函数
2.访问类的静态变量
3. new 类的构造方法()
对象是什么?
对象是程序运行时使用new关键字的堆区中创建的一种数据结构
1.写源代码的时候(没产生)
2.编译字节码的时候(没产生)
3.运行的时候(在堆区中产生的数据结构)
对象的数据结构一定不一样?
用同一个类 构造方法 构造的对象数据结构就是一样
类和对象的关系
1.数量
1 对 多
2.存储位置
类-静止的时候存储在磁盘
运行的时候加载到方法区
对象 - 静止的时候没有对象
运行的时候创建在堆区
面向对象三大特性
属性Property :指的就是类的成员变量,非静态变量
1.类的抽象:抽象是设计类的过程,根据现实世界物理或逻辑存在的某一类事务进行抽象
1)抽象类的特征 -- 用属性来描述出来
2)抽象类的行为 -- 用方法来描述出来
2.类的封装
禁止把对象的属性暴露给外部访问,因为外部可以能会赋予非法值
所以没有修改
不直接对外暴露对象中属性的读写操作
改为对外部暴露一组setter 个 getter 方法
1.使用private 私有化属性
private 封装- 对外部的函数/方法不可见
- 对内部函数/方法可见
2.为属性添加setter 和getter方法
setter:
1.方法名必然叫setXXX,方法有参数,方法没有返回值。
getter:
1.方法名必然叫getXXX,方法没有参数,方法有返回值。
3.在外部使用这样的语法修改对象的属性
指针.属性 = 值 =====> 指针.set 属性(值)
在外部使用这样的语法读对象的饿属性
指针.属性 =====> 指针.get 属性()
一个标准的java类
publice class 类名{
//private 成员变量
//public 成员方法
//public 构造方法
//public setter 设值器 和 getter 读值器
}
设计一个宠物游戏系统
java就是一种典型的静态类型语言
静态类型语言 (运行时不可以改变):
程序未运行的状态
任何一个变量在定义的时候就必须指定其数据类型,并且数据类型不允许改变
动态类型语言(弱类型、可以改变的):
程序运行的的状态
变量的类型是程序运行的时候才知道的