> 文章列表 > 【Java 类】002-类、属性、方法、代码块

【Java 类】002-类、属性、方法、代码块

【Java 类】002-类、属性、方法、代码块

【Java 类】002-类、属性、方法、代码块

文章目录

  • 【Java 类】002-类、属性、方法、代码块
  • 一、类
    • 1、类与对象
    • 2、类的作用
    • 3、创建与使用类
      • 类结构
      • 创建类
      • 调用类
      • 运行结果
    • 4、Java 类的执行过程
    • 5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等
  • 二、属性
    • 1、概述
    • 2、类型
    • 3、定义属性
    • 4、修改与访问属性
    • 5、成员变量和局部变量的区别
    • 6、静态属性
  • 三、方法
    • 1、概述
    • 2、方法的内容
    • 3、定义方法
    • 4、调用方法
    • 5、静态方法、方法重载、方法重写
  • 四、代码块
    • 1、概述
    • 2、代码块顺序

一、类

1、类与对象

在面向对象编程中,类(Class)是一种用户定义的数据类型,用于描述对象的属性和方法。它是面向对象编程的基本概念之一,可以看做是一种模板或蓝图,用于创建对象

类定义了对象属性和方法,属性表示对象的特征或状态,方法表示对象的行为或功能。在 Java 中,类是一种引用类型,它定义了一组属性和方法,并且可以通过关键字 new 创建多个对象。

2、类的作用

Java 类是面向对象编程的基本单位,它的作用包括:

  1. 封装数据和行为:类可以将数据和行为封装在一起,形成一个独立的模块。封装可以隐藏对象的实现细节,提高代码的可维护性和安全性
  2. 继承:类可以通过继承现有类的属性和方法来扩展自己的功能。继承可以减少代码的重复,提高代码的可复用性和可维护性
  3. 多态:类可以通过多态来实现同一种行为具有不同的表现形式。多态可以提高代码的灵活性和扩展性
  4. 对象的创建和销毁:类是创建对象的模板,通过类可以创建多个对象。同时,类也可以定义对象的销毁方式,通过垃圾回收机制自动回收不再使用的对象。
  5. 数据类型扩展:Java 提供了基本数据类型,但是有时候需要使用自定义的数据类型,类可以用来定义自定义数据类型,扩展 Java数据 类型的能力。

3、创建与使用类

类结构

public class ClassName {// 类的成员变量// 类的构造方法// 类的成员方法// ...
}

创建类

package main;public class Person {// 成员变量private String name;private int age;// 在有带参的构造方法时,一个无参的构造方法是必不可少的public Person() {}// 构造方法public Person(String name, int age) {this.name = name;this.age = age;}// 成员方法public void sayHello() {System.out.println("Hello, my name is " + name + ", I'm " + age + " years old.");}
}

调用类

package main;/*** @author zibo* @date 2023/3/5 12:35* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {// 调用带参构造,创建对象Person person = new Person("zibo", 26);// 通过对象调用方法person.sayHello();}
}

运行结果

Hello, my name is zibo, I'm 26 years old.

4、Java 类的执行过程

Java 类的执行过程主要包括以下几个阶段:

  1. 加载(Loading):通过类加载器(ClassLoader)将类的字节码文件(.class 文件)加载到 JVM 内存中,生成一个对应的 Class 对象
  2. 验证(Verification):对字节码文件进行校验,以确保符合 JVM 规范,例如是否有不合法的指令或常量池中的常量引用不存在等。
  3. 准备(Preparation):为类的静态变量分配内存空间,并设置默认值(0、false、null 等)。
  4. 解析(Resolution):将类中的符号引用转化为直接引用,例如将方法调用转化为方法实际地址的映射
  5. 初始化(Initialization):对类进行初始化,包括静态变量的显式初始化和静态代码块的执行等。在初始化过程中,如果发现该类有父类,则先执行父类的初始化
  6. 使用(Usage):正式使用该类,例如创建对象、调用方法等。

需要注意的是,类的加载和初始化只会执行一次,即使创建多个对象也不会重新加载和初始化。而验证、准备和解析则可能会重复执行,例如在运行时通过反射机制获取某个类的信息时就会触发验证、准备和解析过程。在类加载过程中,还会根据一定的策略将类分为不同的类加载器(ClassLoader),以方便对不同类之间的依赖关系进行管理。

5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等

请查看本专栏内其他相关内容。

二、属性

1、概述

类的属性也被称为类的成员变量字段,它们用于存储对象的状态信息

2、类型

类的属性可以是以下类型之一:

  1. 基本数据类型:例如 int、double、boolean 等。
  2. 引用类型:例如字符串、数组、自定义类等。
  3. 特殊类型:例如枚举类型等。

3、定义属性

package main;/*** @author zibo* @date 2023/3/7 14:53* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Person {/*** 名字*/public String name;
}

4、修改与访问属性

package main;/*** @author zibo* @date 2023/3/5 12:55* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {// 1. 创建一个Person对象Person person = new Person();// 2. 修改 Person 对象的 name 属性person.name = "zibo";// 3. 打印 Person 对象的 name 属性System.out.println(person.name);}
}

5、成员变量和局部变量的区别

  1. 定义位置不同:成员变量定义在中,而局部变量定义在方法或语句块中。
  2. 生命周期不同:成员变量的生命周期和对象相同,即当对象创建时,成员变量也会被创建,在对象销毁时,成员变量也会被销毁;而局部变量的生命周期只存在于方法或语句块的执行过程中,执行完后就会被销毁。
  3. 初始化方式不同:成员变量可以在定义时初始化,也可以在构造方法中初始化;而局部变量必须在定义时初始化,否则无法使用。
  4. 访问方式不同:成员变量可以通过对象访问,也可以通过类名访问(静态变量);而局部变量只能在所在的方法或语句块中使用,无法从外部访问。
  5. 作用域不同:成员变量的作用域是整个类,而局部变量的作用域仅限于所在的方法或语句块

6、静态属性

请查看本专栏内其他相关内容。

三、方法

1、概述

类的方法定义了可以对对象执行的操作。方法可以看作是类的行为或功能的具体实现。

2、方法的内容

Java 类的方法可以包括以下内容:

  1. 方法名:方法的名称,用于在程序中调用方法。
  2. 参数列表:方法接受的输入参数,可以是零个或多个
  3. 返回类型:方法的返回值类型,可以是任何 Java 数据类型,包括基本数据类型、对象类型和数组类型。
  4. 访问修饰符:控制方法在哪些位置可以被访问,包括 public、protected、private 和默认。
  5. 方法体:方法的具体实现代码。

3、定义方法

public class Calculator {// 将两个数字相加并返回结果public int add(int num1, int num2) {return num1 + num2;}
}

4、调用方法

System.out.println(new Calculator().add(100, 100)); // 200

5、静态方法、方法重载、方法重写

请查看本专栏内其他相关内容。

四、代码块

1、概述

Java 类中的代码块是指在类中使用大括号 {} 括起来的一段代码,它们可以是静态的或非静态的,并且可以分为多个不同类型。

  1. 静态代码块(Static Blocks):用 static { } 来定义,只在类加载时执行一次,且只能访问静态成员变量和方法。
  2. 实例初始化块(Instance Initialization Blocks):用 { } 来定义,每次创建新实例时都会执行,且在构造函数之前执行。
  3. 构造代码块(Constructor Blocks):用 { } 来定义,与构造函数一起构成了对象的构造过程,每次创建新实例时都会执行,且在构造函数之前执行。

使用代码块的好处是可以将多个方法中共同的部分提取出来,统一进行处理,从而提高代码的重用性和可维护性。比如在静态代码块中可以对静态成员变量进行初始化,或者对数据库连接进行初始化;在实例初始化块中可以对非静态成员变量进行初始化,或者执行一些必要的预处理操作;在构造代码块中可以对所有构造函数中共同的初始化操作进行封装,以避免重复代码。

2、代码块顺序

类被加载时(调用静态变量或静态方法)执行静态代码块;

第一次创建对象时:执行静态代码块——执行普通代码块——执行构造函数;

第二次及之后再创建对象时:执行普通代码块——执行构造函数。