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关键字和类的构造方法可以创建类的实例(即对象)。
  • 每个对象都拥有自己独立的属性副本,因此即使基于同一个类创建的不同对象,它们各自的属性值也可以不同。
相关推荐
小羊没烦恼!6 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里6 小时前
java中的继承和多态的区别
java
小羊没烦恼!6 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕7 小时前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码7 小时前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖7 小时前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时7 小时前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang8 小时前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi8 小时前
mysql 查询所有表名并授权
java
ProcessOn官方账号8 小时前
java函数式编程--入门基础
java·编程·函数式编程