一、类和对象的基本概念
在Java中,类是面向对象编程的基础构造块。类可以看作是一个模板或蓝图,用于创建对象。类定义了对象的属性和行为。
1、类的组成要素
-
字段(Field):也称为成员变量,用于存储对象的状态
-
方法(Method):定义对象的行为或功能
-
构造器(Constructor):用于创建和初始化对象
-
代码块:用于初始化字段
-
内部类:在类中定义的类
2、对象的特性
-
状态:由对象的属性值表示
-
行为:通过方法实现
-
标识:每个对象在内存中有唯一的地址
3、类的定义语法
java
[访问修饰符] class 类名 {
// 字段声明
[访问修饰符] 数据类型 字段名;
// 构造器定义
[访问修饰符] 类名(参数列表) {
// 构造器体
}
// 方法定义
[访问修饰符] 返回类型 方法名(参数列表) {
// 方法体
}
}
二、对象的创建和使用
1、创建对象
在Java中创建对象需要三个步骤:
-
声明:声明一个对象引用变量
-
实例化 :使用
new关键字创建对象 -
初始化:调用构造器初始化对象
java
// 声明对象引用
ClassName objectName;
// 实例化对象
objectName = new ClassName();
// 也可以合并为一步
ClassName objectName = new ClassName();
2、访问对象成员
使用点号(.)操作符访问对象的成员:
java
// 访问字段
objectName.fieldName = value;
// 调用方法
objectName.methodName(arguments);
三、方法
方法是类中定义的行为或功能。
1、方法定义包含内容
-
访问修饰符(如public、private)
-
返回类型(如void表示无返回值)
-
方法名
-
参数列表(可选)
-
方法体
2、方法示例
java
public class Calculator {
// 加法方法
public int add(int a, int b) {
return a + b;
}
// 方法重载 - 处理三个数相加
public int add(int a, int b, int c) {
return a + b + c;
}
// 无返回值方法
public void printResult(int result) {
System.out.println("结果是: " + result);
}
}
3、访问控制修饰符
Java提供了四种访问修饰符来控制对类、字段、方法和构造器的访问权限。
-
public:对所有类可见
-
protected:对同一包内的类和所有子类可见
-
default(无修饰符):对同一包内的类可见
-
private:仅对当前类可见
|------------|-----|----|----|-----|
| | 当前类 | 同包 | 子类 | 其他包 |
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| default/不写 | √ | √ | × | × |
| private | √ | × | × | × |
四、构造器
构造器是类的一种特殊方法,用于初始化新创建的对象。
1、构造器的主要特点
-
与类同名
-
没有返回类型(连void也没有)
-
可以有参数
-
可以重载(定义多个不同参数的构造器)
2、构造器示例
java
public class Person {
private String name;
private int age;
// 无参构造器
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 带两个参数的构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 方法省略...
}
五、静态成员
使用**static**关键字修饰的成员属于类而非对象
-
静态变量:类的所有实例共享
-
静态方法:可以直接通过类名调用,不能访问非静态成员
1、静态变量
静态变量(静态字段)是类级别的变量。
静态变量特点:
-
使用
static关键字修饰 -
存储在内存的静态区
-
在类加载时初始化
-
可以通过类名直接访问,也可以通过实例访问(但不推荐)
-
常用于存储类级别的共享数据
java
public class Counter {
// 静态字段
private static int count = 0;
public Counter() {
count++;
}
public static int getCount() {
return count;
}
}
2、静态方法
静态方法特点:
-
使用
static关键字修饰 -
可以直接通过类名调用
-
不能直接访问非静态成员(必须通过对象实例访问)
-
不能使用
this和super关键字 -
常用于工具类方法
3、注意事项
-
静态成员的生命周期与类相同,从类加载到JVM卸载
-
过多使用静态成员可能导致内存泄漏
-
静态方法不能被重写(但可以隐藏)
-
静态成员在多线程环境下需要考虑线程安全问题
4、静态成员示例
java
public class Employee {
private int id;
private String name;
// 静态变量 - 记录员工总数
private static int count = 0;
public Employee(String name) {
this.id = ++count;
this.name = name;
}
// 静态方法
public static int getEmployeeCount() {
return count;
}
// 其他方法...
}
// 使用静态方法
int total = Employee.getEmployeeCount();