Writing a class: fields, constructor, methods · Viết một class: các trường (fields), constructor, phương thức (methods)
Make your own type
- So far you used classes like
StringandMaththat Java gave you. - Now you will write your own class. A class is a plan for an object.
- An object holds data (its own values) and methods (things it can do).
Tạo kiểu của riêng bạn
- Cho đến nay, bạn đã sử dụng các class như
StringvàMathdo Java cung cấp. - Bây giờ bạn sẽ viết class của chính mình. Class là một bản thiết kế cho một đối tượng.
- Một đối tượng chứa dữ liệu (các giá trị riêng của nó) và phương thức (những gì nó có thể làm).
Instance variables
- Data that each object keeps is stored in instance variables (also called fields).
- You declare them inside the class, but outside any method.
- Each object gets its own copy of these variables.
Biến instance
- Dữ liệu mà mỗi đối tượng lưu giữ được chứa trong biến instance (còn gọi là trường).
- Bạn khai báo chúng bên trong lớp, nhưng ngoài mọi phương thức.
- Mỗi đối tượng có bản sao riêng của các biến này.
public class Dog {
String name; // instance variable
int age; // instance variable
}
A constructor
- A constructor sets up a new object. It runs when you write
new. - It has the same name as the class and no return type (not even
void). - Use the word
thisto mean "this object's own variable".
Một khởi tạo viên
- Một khởi tạo viên thiết lập một đối tượng mới. Nó chạy khi bạn viết
new. - Nó có cùng tên với class và không có return type (ngay cả
voidcũng không có). - Sử dụng từ
thisđể có nghĩa là "biến riêng của đối tượng này".
public class Dog {
String name;
int age;
// Constructor: runs when we make a new Dog
public Dog(String name, int age) {
this.name = name; // this.name is the field; name is the parameter
this.age = age;
}
}
Instance methods
- An instance method is an action an object can do.
- It can read and change the object's own instance variables.
- You call it on an object with a dot:
myDog.speak().
Phương thức instance
- Một phương thức instance là hành động mà một đối tượng có thể thực hiện.
- Nó có thể đọc và thay đổi các biến instance riêng của đối tượng đó.
- Bạn gọi nó trên một đối tượng bằng dấu chấm:
myDog.speak().
public class Dog {
String name;
int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
// Instance method: returns a sentence about this dog
public String describe() {
return this.name + " is " + this.age;
}
}
Make and use an object
- Use
new ClassName(...)to build an object. This calls the constructor. - Store it in a variable whose type is the class name.
- Then call its methods with a dot.
Tạo và sử dụng một đối tượng
- Sử dụng
new ClassName(...)để xây dựng một đối tượng. Điều này gọi đến khởi tạo viên. - Lưu trữ nó trong một biến có kiểu là tên lớp.
- Sau đó gọi các phương thức của nó bằng dấu chấm.
public class Main {
public static void main(String[] args) {
Dog d = new Dog("Rex", 4);
System.out.println(d.describe()); // Rex is 4
}
}
class Dog {
String name;
int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public String describe() {
return this.name + " is " + this.age;
}
}
Why this?
- A parameter and a field can have the same name (like
name). - Inside the constructor,
namemeans the parameter;this.namemeans the field. thisalways means the object the method was called on.
Tại sao this?
- Một tham số và một trường có thể có tên giống nhau (như
name). - Bên trong khởi tạo viên,
namecó nghĩa là tham số;this.namecó nghĩa là trường. thisluôn có nghĩa là đối tượng mà phương thức đã được gọi trên đó.
Common mistakes
- A constructor has no return type and matches the class name.
- Use
this.fieldto tell a field from a parameter of the same name.
Lỗi thường gặp
- Khởi tạo viên không có kiểu trả về và trùng với tên lớp.
- Sử dụng
this.fieldđể phân biệt trường với tham số cùng tên.
Now you try
- Each task gives you a class skeleton with a TODO. Fill it in so it compiles and works.
- A hidden Harness builds your object and checks the results.
- Press Run to compile, then Check answer.
Bây giờ bạn thử
- Mỗi bài tập cung cấp cho bạn một khung lớp với TODO. Hãy điền vào để nó biên dịch và hoạt động.
- Một Harness ẩn sẽ tạo đối tượng của bạn và kiểm tra kết quả.
- Nhấn Run để biên dịch, sau đó nhấn Check answer.
Complete the Counter class. It has an int field count that starts at 0. increment() adds 1 to it. getCount() returns the current value. · Hoàn thiện class Counter. Class này có một trường int là count bắt đầu bằng 0. increment() tăng nó lên 1. getCount() trả về giá trị hiện tại.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete the Rectangle class. The constructor takes width w and height h and stores them. area() returns width times height. perimeter() returns 2 times (width plus height). · Hoàn thiện class Rectangle. Constructor nhận width w và height h và lưu chúng lại. area() trả về width nhân với height. perimeter() trả về 2 lần (width cộng height).
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete the Greeter class. The constructor takes a String name and stores it in the field name. greet() returns the text Hello, followed by the name and a ! (for "Ana" it returns Hello, Ana!). · Hoàn thiện class Greeter. Constructor nhận một String name và lưu vào trường name. greet() trả về chuỗi Hello, theo sau là tên và một ! (đối với "Ana" nó sẽ trả về Hello, Ana!).
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.