类和对象

类和对象

一、类的创建

class ClassName{ 
      field;     // 成员变量
      method;    // 成员方法
}
  1. 一般一个文件当中只定义一个类
  2. main方法所在的类一般要使用public修饰
  3. public修饰的类必须要和文件名相同
  4. 不要轻易去修改public修饰的类的名称

二、类的实例化

使用new关键字实例化对象

  1. 检测对象对应的类是否加载了,如果没有加载则加载
  2. 为对象分配内存空间
  3. 处理并发安全问题
    比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突
  4. 初始化所分配的空间
    即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:
数据类型 默认值
byte 0
char '\u0000'
short 0
int 0
long 0L
boolean false
float 0.0f
double 0.0
reference null
  1. 设置对象头信息(关于对象内存模型后面会介绍)
  2. 调用构造方法,给对象中各个成员赋值

三、this引用

与C++类似,this引用是在成员方法中对该对象的引用

  • this是“成员方法”第一个隐藏的参数,编译器会自动传递

四、构造方法

  1. 与C++构造函数类似
  2. 多数情况下需要被public修饰

五、访问限定符

六、包

  1. 概念

    为了更好的管理类,把多个类收集在一起成为一组,称为软件包

    • 包是对类、接口等的封装机制的体现,是一种对类或者接口的很好的组织方式

    • 在同一个工程中允许存在相同名称的类,只要处在不同的包中即可

  2. 导入包

使用import关键字

import java.util.*; // 导入util包中的所有类
  • java包的导入是随用随取,不会全部导入
  • 导入 package.*可能会出现类名冲突的情况,所以最好要指定导入的类名

使用import static导入包中静态的方法和字段

注意:import 和 C++ 的 #include 不一样。 import 更类似于 C++ 的 namespace 和 using

  1. 自定义包
    1. 首先要创建包,在vscode下就是直接创建文件夹,然后在包中添加.java文件
    2. 在文件最上方加上 package 包名
    3. 包名要和代码路径相匹配
    4. 如果一个类没有 package 语句, 则该类被放到一个默认包中

七、类内代码块

  1. 初始化非静态成员(不常用)

    class A{
    	int a;
    	{
    		a = 10;
    	}
    }
    
    • 在创建对象时优先于构造函数执行
  2. 静态代码块

    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;
	}	
}
posted @ 2023-05-17 22:56  白小鸭  阅读(39)  评论(0)    收藏  举报