Try   HackMD

Tìm hiểu về cấu trúc của class trong java

  • Trong 1 class java, ta định nghĩa các thành phần thông qua file .java, các file này sau khi được biên dịch bởiJava Compiler (JVM), sẽ trở thành các bytecode và được lữu trữ trong file .class

    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →

  • Các thành phần trong class:

Package statement                   // 1
Import statements                  // 2 
Comments                          // 3a
Class declaration {              // 4
Variables                       // 5
Comments                        // 3b
Constructors                    // 6
Methods                         // 7
Nested classes                // 8
Nested interfaces             // 9   
Enum                           // 10
}

Chi tiết

Package statement

  • Tất cả các class java đều là 1 phần của package, nên nó phải được định nghĩa bởi tên của package, nếu không sẽ là package default.
  • package phải được khai báo trên cùng của mỗi class, không được khai báo trong định nghĩa class hoặc sau class, và có một và chỉ 1 package được khai báo trong mỗi class.
package certification; 
class Course { 
 
}

class Course {
package com.cert;     // sai vì khai báo trong class
}

package com.cert; 
package com.exams; 
class Course {            // sai vì chỉ được khai báo 1 package
}

Import statement

Các class hay interface trong cùng một package sẽ đều sử dụng chung một package để khai báo. Vậy để sử dụng các class hoặc interface trong package khác thì làm thế nào, có một cách sử dụng là fully qualified name, tức là nó có dạng sau packageName.anySubpackageName .ClassName, nếu sử dụng như trên thì code sẽ trở nên khó đọc, thay vì vậy ta sẽ sử dụng import.

package university;
import certification.ExamQuestion;
class AnnualExam {
 ExamQuestion eq; 
}

Thay vì sử dụng:

package university;
class AnnualExam {
 certification.ExamQuestion eq; 
}

Comments

Comment giúp code của chúng ta trở nên dễ đọc hơn khi có những chú thích cho những đoạn code phức tạp, và sẽ giúp dễ bảo trì hơn sau này. Trình biên dịch JVM sẽ tự động bỏ qua những comment, nên ta sẽ không cần lo lắng nó sẽ ảnh hưởng đến code của mình. Có 2 loại commentmultiline commentsend-of-line comments.

  • Multiline comments
class MyClass {
 /* 
 comments that span multiple 
 lines of code 
 */ 
}
  • End-of-line comments
class Person {
 String fName; // variable to store Person's first name 
 String id; // a 6 letter id generated by the database 
}

  • Một số ví dụ
String name = /* Harry */ "Paul";
System.out.println(name);    // output: Paul
String name = "/* Harry */ Paul";
System.out.println(name);    // output: /* Harry */ Paul
String name = "Shre /* ya 
 */ Paul"; 
System.out.println(name);//lỗi biên dịch: vì đóng mở String phải nằm trên 1 dòng

Class Declaration

Khai báo class là sự bắt đầu của một lớp, một ví dụ đơn giản là:

class Person { 
//.. 
//.. 
}

Trong đó class là keyword, còn Person là tên của class. Khai báo class đầy đủ sẽ có những tthành phần sau:

  • Access modifiers
  • Nonaccess modifiers
  • Class name
  • Name of the base class, if the class is extending another class
  • All implemented interfaces, if the class is implementing any interfaces
  • Class body (class fields, methods, constructors), included within a pair of curly
    braces, {}
public final class Runner extends Person implements Athlete {} 

Ta có thể xem hình minh họa dưới đây để hiểu rõ hơn về các thành phần trên

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Từ hình minh họa ta có thể thấy các thành phần sẽ có 2 cấp độ, compulsory hoặc optional.

Class Definition

class là một thiết kế được sử dụng để xác định các thuộc tính và hành vi của một đối tượng. Các thuộc tính của một đối tượng được triển khai bằng cách sử dụng cácvariable và hành vi được triển khai sử dụng các method.

class Phone {
 String model;
 String company;
 Phone(String model) {
 this.model = model;
 } 
 double weight;
 void makeCall(String number) {
 // code
 }
 void receiveCall() {
 // code
 }
}

Variables

Variables hay còn gọi là biến hay thuộc tính, được sử dụng trong class để lưu giữ trạng thái của đối tượng, hay còn gọi là instances. Mỗi đối tượng đều có instance variables, nếu ta thay đổi giá trị của 1 instance variable, giá trị của biến đó sẽ không thay đổi với các đối tượng khác. Một bản sao duy nhất của variable sẽ được khai báo là static, khi đó biến này sẽ được dùng chung với mọi instance của lớp đó.

Method

Phương thức của lớp sẽ thể hiện các hành vi của lớp đó, xử lý các biến.

Constructor

Hàm tạo của lớp được sử dụng để khởi tạo các đối tượng, có thể có nhiều hàm tạo với các đối số truyền vào khác nhau. nếu không có constructor nào được khai báo trong một class, Java sẽ tự động tạo ra một constructor mặc định (default constructor) không tham số (no-argument constructor).

Một số lưu ý

  • Có thể khai báo nhiều class hoặc interface trong 1 file .java, nhưng chỉ có 1 class hoặc interface là được khai báo là public, và phải có trùng tên với file, nếu vi phạm thì trình biên dịch sẽ báo lỗi.

Kết luận

Trên đây là một số điều cơ bản về class trong java, cũng như file .java.

Tài liệu tham khảo

OCA Java SE 8 Programmer I Certification Guide - Mala Gupta