java.类与对象(1)

1.类与对象的定义

        类是一种抽象的数据类型,它描述了具有共同属性和行为的一组对象的集合。而对象是类的实例。在Java中,你使用关键字new来创建类的实例,即对象。每个对象都是类的一个具体实现,它拥有类中定义的所有属性和方法。

        这么讲可能有点难懂,我换个说法。拿我们人类为例,人类就是类,我们身为人类,每一个人都是“人”这个类的实例也就是对象,每个人都是“人”这个类的具体实现,每个人都有作为人的基本属性。

2 .类与对象的创建

2.1类的创建   

 类定义了对象的结构,包括:

  • 属性:也称为成员变量,用于存储对象的状态信息。
  • 方法:定义了对象可以执行的操作或行为。
  • 构造函数:特殊的方法,用于在创建对象时初始化对象。名字应当与类相同
public class Person {  
    // 属性,成员变量  
    String name;  
    int age;  
  
    // 方法  
    void introduce() {  
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");  
    }  
  
    // 构造函数  
    Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
}

大部分类都是由class修饰的,在这里,Person就是一个类。

 2.2对象的创建

 我们需要使用关键字 new 来创建对象。

public class Main {  
    public static void main(String[] args) {  
        // 创建Person类的对象  
        Person person1 = new Person("Alice", 30);  
  
        // 调用对象的方法  
        person1.introduce(); // 输出:Hello, my name is Alice and I am 30 years old.  
    }  
}

        这里我们就是创建了一个新对象 person1 ,它存储了name为"Alice"和age为30的信息,并且可以调用 introduce 方法来输出其介绍信息。

3.this的用法

在类的创建里,我们我们会发现 this 的字眼 ,那么它究竟有什么用呢?

3.1. 区分成员变量和局部变量
public class Person {  
    String name; // 成员变量  
  
    public void setName(String name) {  
        this.name = name; // 使用this来引用成员变量name  
    }  
  
    public String getName() {  
        return this.name; // 同样,可以使用this,但在这里不是必需的,因为name只出现了一次  
    }  
}

        假如成员变量和方法中的临时变量一样的话,由于编译器会默认使用局部变量,除非明确指定使用 this 来引用成员变量,否则二者很容易混淆。

3.2. 调用当前类的其他构造器

 在类中,构造方法是可以重载的

public class Person {  
    String name;  
    int age;  
    String email; // 新增的字段  
  
    // 第一个构造器,只初始化name  
    Person(String name) {  
        this.name = name;  
    }  
  
    // 第二个构造器,通过调用第一个构造器来初始化name,并额外初始化age  
    Person(String name, int age) {  
        this(name); // 使用this调用第一个构造器,传递name参数  
        this.age = age;  
    }  
  
    // 第三个构造器,通过调用第二个构造器来初始化name和age,并额外初始化email  
    Person(String name, int age, String email) {  
        this(name, age); // 使用this调用第二个构造器,传递name和age参数  
        this.email = email;  
    }  
  
    // 其他方法...  
}

        我们可以看到三个,this 后面直接跟参数,编译器会自动找到对应的结构方法,通过这种方式,我们可以通过少量的代码来复用构造器之间的初始化逻辑,从而避免代码重复,并使类的结构更加清晰和易于维护

注意:this() 必须是构造器中的第一条语句。

3.3. 返回当前对象的引用

         通过返回当前对象的引用,我们可以在一行代码中连续调用多个方法,这通常被称为链式调用或流式接口。可以连续调用嘛,就和链子一样。

public class User {  
    private String name;  
    private int age;  
    private String email;  
  
    // 构造器  
    public User() {}  
  
    // setName方法,返回当前对象的引用  
    public User setName(String name) {  
        this.name = name;  
        return this; // 返回当前对象的引用  
    }  
  
    // setAge方法,返回当前对象的引用  
    public User setAge(int age) {  
        this.age = age;  
        return this; // 返回当前对象的引用  
    }  
  
    // setEmail方法,返回当前对象的引用  
    public User setEmail(String email) {  
        this.email = email;  
        return this; // 返回当前对象的引用  
    }  
    
    // 示例:使用链式调用来设置User对象的属性  
    public static void main(String[] args) {  
        User user = new User()  
                .setName("John Doe")  
                .setAge(30)  
                .setEmail("john.doe@example.com");  
  
        // 现在user对象已经设置好了所有属性,可以使用它...  
    }  
}

        这里的 User 类 有三个成员变量,之前我们可能需要写三行代码分别输入,但现在就可以一行调用多个方法,一行输入了。

4.构造方法

  1. 名称与类名相同:构造方法的名称必须与类名完全相同(包括大小写)

  2. 没有返回类型:构造方法没有返回类型,void都不写。如果写了返回类型,那么它就不再是构造方法,而是一个普通方法。

  3. 自动调用:构造方法是在创建对象时自动调用的,你不能直接调用构造方法,但可以通过new关键字来间接调用。

  4. 可以有多个(可以重载):一个类可以有多个构造方法,只要它们的参数列表不同(这称为构造方法的重载)。

  5. 初始化对象:构造方法的主要作用是初始化对象的状态,即给对象的成员变量赋初值。

  6. 默认构造方法:如果一个类没有显式定义任何构造方法,则编译器会自动提供一个无参的默认构造方法。但是,一旦你定义了至少一个构造方法,编译器就不会再提供默认构造方法了。

  7. 可以通过this调用,但不能构成环:比如 

 

这样来回调用就是不行的。 

未完待续~

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值