类和对象
类和对象
一、类的创建
class ClassName{
field; // 成员变量
method; // 成员方法
}
- 一般一个文件当中只定义一个类
- main方法所在的类一般要使用public修饰
- public修饰的类必须要和文件名相同
- 不要轻易去修改public修饰的类的名称
二、类的实例化
使用new关键字实例化对象
- 检测对象对应的类是否加载了,如果没有加载则加载
- 为对象分配内存空间
- 处理并发安全问题
比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突 - 初始化所分配的空间
即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:
| 数据类型 | 默认值 |
|---|---|
| byte | 0 |
| char | '\u0000' |
| short | 0 |
| int | 0 |
| long | 0L |
| boolean | false |
| float | 0.0f |
| double | 0.0 |
| reference | null |
- 设置对象头信息(关于对象内存模型后面会介绍)
- 调用构造方法,给对象中各个成员赋值
三、this引用
与C++类似,this引用是在成员方法中对该对象的引用
- this是“成员方法”第一个隐藏的参数,编译器会自动传递
四、构造方法
- 与C++构造函数类似
- 多数情况下需要被public修饰
五、访问限定符

六、包
-
概念
为了更好的管理类,把多个类收集在一起成为一组,称为软件包
-
包是对类、接口等的封装机制的体现,是一种对类或者接口的很好的组织方式
-
在同一个工程中允许存在相同名称的类,只要处在不同的包中即可
-
-
导入包
使用import关键字
import java.util.*; // 导入util包中的所有类
- java包的导入是随用随取,不会全部导入
- 导入
package.*可能会出现类名冲突的情况,所以最好要指定导入的类名
使用import static导入包中静态的方法和字段
注意:import 和 C++ 的 #include 不一样。 import 更类似于 C++ 的 namespace 和 using
- 自定义包
- 首先要创建包,在vscode下就是直接创建文件夹,然后在包中添加.java文件
- 在文件最上方加上
package 包名 - 包名要和代码路径相匹配
- 如果一个类没有 package 语句, 则该类被放到一个默认包中
七、类内代码块
-
初始化非静态成员(不常用)
class A{ int a; { a = 10; } }- 在创建对象时优先于构造函数执行
-
静态代码块
class A{ static int a; static { a = 10; } }- 在类加载时执行,与对象无关
八、重载toString()方法
print函数在打印对象时会调用Object的toString()方法
当自定义类重载了toString()方法时就可以实现对对象的打印
class A{
int a = 10;
@Override
public String toString(){
return "a:" + a;
}
}

浙公网安备 33010602011771号