模块课程(1/2)
类和对象
Java 是一种专注于 面向对象编程 (OOP) 的语言。在面向对象编程中,我们使用对象对现实世界进行建模。对象具有状态(数据)和行为(动作)。
类和对象
- 类:它是定义一类对象的属性和行为的蓝图(或模板)。
- 对象:它是从类创建的具体实例。
例如,如果 Car 是类,则车库中的汽车就是实际对象。
实例字段和构造函数
类内的数据称为实例字段(或属性)。为了在对象创建时初始化对象的状态,我们使用一种称为构造函数的特殊方法。
构造函数具有与类相同的名称并且没有返回类型(甚至没有 void)。
class Dog {
// Instance fields
String name;
int age;
// Constructor
public Dog(String name, int age) {
this.name = name; // 'this' refers to the current object's field
this.age = age;
}
}使用 new 创建对象
要在内存中创建对象,我们使用 new 关键字,后跟类构造函数:
public class Main {
public static void main(String[] args) {
// Creating a Dog object
Dog myDog = new Dog("Fido", 3);
// Accessing fields
System.out.println(myDog.name + " is " + myDog.age + " years old.");
}
}this 参考
Java 中的 this 关键字指的是正在执行构造函数或方法的当前对象。它主要用于当构造函数参数与对象的实例字段同名时避免歧义(变量遮蔽):
class User {
String username;
public User(String username) {
this.username = username; // this.username is the instance field, username is the parameter
}
}内存分配:堆栈与堆
了解 Java 如何分配内存至关重要:
- 堆栈:它是一个快速且有组织的内存区域,其中存储方法本地的原始变量和对象引用(内存地址)。
- 堆:它是分配实际对象的更大的动态内存区域(使用
new关键字)。
当我们声明 Dog myDog = new Dog("Fido", 3); 时:
- 引用
myDog在 Stack 上创建。 - 实际的
Dog对象及其数据是在 堆 上创建的。 myDog变量指向 堆 上对象的位置。
自己尝试一下
通过添加字段名称和适当的构造函数来完成 Person 类。然后,在 main 方法中,创建一个名为 p 且名为 Alice 的 Person 对象。
显示提示
在类中写入`String name;`,声明构造函数`public Person(String name) { this.name = name; }` 并用 `new Person('Alice')` 实例化它。
3 次尝试后可用的解决方案
创建一个 Book 类,其中包含字段 title (String) 和 Pages (int),一个完整的构造函数,并在 main 方法中实例化一本名为 b 的书,书名为 Moby Dick,页数为 600。
显示提示
请记住在 Book 中定义这两个字段,使用 `this.title = title;` 和 `this.pages = pages;` 在构造函数中映射它们,并使用 `new Book('Moby Dick', 600)`。
3 次尝试后可用的解决方案
创建一个包含字段名称(字符串)和价格(双精度)的 Product 类,以及初始化这两个字段的构造函数。在 main 方法中,创建一个名为 p 的 Product 对象,名称为 Laptop,价格为 999.99。
显示提示
在 Product 中声明 `String name;` 和 `doubleprice;` 字段,并在构造函数中使用 `this.name = name;` 和 `this.price =price;` 对其进行赋值,最后在 main 方法中创建对象。
3 次尝试后可用的解决方案