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关键字和类的构造方法可以创建类的实例(即对象)。
  • 每个对象都拥有自己独立的属性副本,因此即使基于同一个类创建的不同对象,它们各自的属性值也可以不同。
相关推荐
RainbowSea7 小时前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea7 小时前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑11 小时前
Jpa使用union all
java·spring boot·后端
用户37215742613511 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊12 小时前
Java学习第22天 - 云原生与容器化
java
渣哥14 小时前
原来 Java 里线程安全集合有这么多种
java
间彧14 小时前
Spring Boot集成Spring Security完整指南
java
间彧15 小时前
Spring Secutiy基本原理及工作流程
java
Java水解16 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆18 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试