Java 类和对象

类(Class)

类是创建对象的蓝图或模板。它定义了一组具有相同属性(变量)和行为(方法)的对象的结构和行为。类可以看作是一种抽象的"类型",它描述了一组对象共同的特征和功能。

类的定义

一个类一般包含以下几部分:

  • 类名 :要遵循大驼峰命名法(UpperCamelCase),如PersonCar
  • 属性 :也称为字段或成员变量,用于存储对象的状态信息。属性通常使用访问修饰符(如privateprotectedpublic)来控制其可见性。
  • 方法:也称为成员方法,用于执行操作或表示对象的行为。方法可以访问和修改对象的属性。
  • 构造方法:特殊的方法,用于在创建对象时初始化对象的状态。构造方法的名称必须与类名相同。

代码示例:

csharp 复制代码
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("你好,我的名字叫: " + name + " 今年 " + age + " 岁.");
    }
​
    // getter和setter方法 (用于获取和修改成员变量的值)
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public int getAge() {
        return age;
    }
​
    public void setAge(int age) {
        this.age = age;
    }
}

对象(Object)

对象是类的实例。 当你根据类的定义创建一个具体的实例时,就创建了一个对象。对象包含了类定义的属性和方法,每个对象都有其自己的属性值集合,这些值定义了对象的状态。

创建对象的格式:

  • 类名 对象名 = new 类名();

调用成员的格式:

  • 对象名.成员变量;
  • 对象名.成员方法();

示例代码:

java 复制代码
public class TestPerson {
    public static void main(String[] args) {
​
        // 创建 Person 类的对象
        Person person = new Person();
        // 初始化赋值 (通过 set 方法)
        person.setName("林一");
        person.setAge(36);
        // 初始化赋值 (通过 get 方法)
        String name = person.getName();
        System.out.println("我叫 " + name + " 今年 " + person.getAge() + " 岁!");
​
        // 创建 Person 类的一个对象 , 并通过构造方法初始化赋值
        Person zhang = new Person("张三", 18);
        // 调用对象的成员方法
        zhang.sayHello();
    }
}

类和对象的关系

  • 类是抽象的,它只描述了"是什么"和"能做什么",但不占用具体的内存空间。
  • 对象则是类的实例化,它是实际存在的,占用内存空间,拥有类定义的所有属性,并可以执行类定义的所有方法。
  • 通过new关键字和类的构造方法可以创建类的实例(即对象)。
  • 每个对象都拥有自己独立的属性副本,因此即使基于同一个类创建的不同对象,它们各自的属性值也可以不同。
相关推荐
wuminyu6 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
callJJ7 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
wbs_scy8 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
jinanwuhuaguo9 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup10 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
9523610 小时前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.10 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-194310 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心122110 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px11 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋