Object và class trong java với ví dụ cụ thể

Object trong java

Khái niệm

Trong một chương trình java, Object là một trong những thành phần cốt lõi. Thông qua các Object ta có thể làm được các công việc chúng ta cần như: Tính toán, tạo giao diện v.v. 

Các tài nguyên được các object trước tạo ra có thể được các object khác sử dụng lại để thực hiện công việc của chính nó.

Các thành phần chính của object

Khái niệm ở trên có vẽ khô khan quá, =) Mình véo von là bản thân mình được java mô ta là một object luôn đó các bạn.

Vậy mình là con người, mà con người thì có gì nào?

  • Đặc điểm – thuộc tính: ví dụ như độ đẹp trai, màu tóc, chiều cao,…
  • Hành vi – method : đi, ăn, ngủ, ị, cua gái,..

Class trong java

Khái niệm

Nếu như object là một ánh xạ của một đối tượng trong thế giới thực, thì class là một bản vẽ thiết kế của các object(blueprint).

Chúng ta thấy hình minh hoạ ở trên, dù là người Việt, Mỹ hay Nhật thì cũng đều là con người đều có độ đẹp trai, màu tóc, biết đi, biết ăn,..

Các đặc tính, hành vi ấy là giống nhau, nhưng khác các biểu hiện, ví dụ người Việt hay Mỹ đều có tóc nhưng tóc nó màu vàng, mình màu đen(Không chơi nhuộm nha -_-).

Khởi tạo một class

public class Person {
    // biến instance 
    Color colorHair;
    float height;
    int age;

    // contructor
    Person(Color colorHair, float height, int age) {
        this.colorHair = colorHair;
        this.height = height;
        this.age = age;
    }

    void eat() {
        // biến local
        int a = 10;
    }
}

Các thành phần chính của class: 

  • Tên class: Person
  • Constructor: Person(){}
  • Biến: colorHair,..
  • Method: eat() 

Một class có thể chứa các loại biến sau:

  • Biến local: Được khai báo bên trong method, contructor, block thì được gọi là biến local. Biến local trong method sẽ được giải phóng sau khi method thực thi xong. 
  • Biến instance: Là biến chứa bên trong class nhưng không nằm trong method nào. Chúng được khởi tạo khi class khởi tạo. Các method, contructor của class có thể truy xuất được. 
  • Biến của class: Được khai báo bên trong class nhưng nằm ngoài các method và đi cùng với từ khoá static.

Constructor

Trong class, constructor là một phần khá quan trọng trong class. Tất cả các class trong Java đều có constructor, nếu bạn không định nghĩa bất cứ constructor nào cho class thì trình biên dịch sẽ tự động thêm một constructor mặc định.

Note: Constructor không phải là một method và có tên trùng với tên class.

Ví dụ đối với class trên nếu bạn không thêm constructor 

Person(Color colorHair, float height, int age)

Thì trình biên dịch sẽ thêm mặc định sau

Person() {}

Khi một đối tượng được tạo ra, constructor sẽ được gọi, đây là nơi lý tưởng để khởi tạo các giá trị ban đầu cho các biến, hoặc thực thi một số tác vụ trong class.

Một class có thể có nhiều constructor, tất cả chúng đều có tên trùng với tên class nhưng khác nhau về tham số và block code chứa bên trong.

Ví dụ

//Constructor 1
Person() { // code block}
Person(Color colorHair, float height, int age) { // code block}

Khởi tạo một object trong java

Như mình đã nói ở trên, class là một bản thiết kế (template) cho object. Vì vậy cơ bản một object được tạo ra từ 1 class. Trong java để khởi tạo một object chúng ta sử dụng từ khoá new

Person person = new Person();

// or

Person person = new Person(Color.BLACK, 160.5, 20)

Ví dụ: 

public class Example {
    Example(String name) {
      System.out.println("Name is: " + name );
   }

   public static void main(String []args) {
      Example ex = new Example( "dummy" );
   }
}

Output: Name is dummy

Note: Các object được tạo ra từ mẫu thiết kế – class gọi là object instance. Hiểu nôm na là các object được tạo ra từ một class chung nhưng có đặc tính, hành động khác nhau. 

Truy cập các biến instance và method 

Để truy cập các biến instance và các method từ object được tạo ra, chúng ta sẽ làm như sau:

// B1 khởi tạo object
ObjectReference obj = new Constructor();

// B2: Truy cập các biến biến instance
obj.<Tên biến instance>

// B3 Sử dụng method
obj.<Tên method>();

Ví dụ chúng ta có các file class sau 

public class Example {

    String name;

    Example() {
        System.out.println("Khoi tao object");
    }

    void getName() {
        System.out.println("Name la: " + name);
    }
}
public class Main {
    public static void main(String[] args) {
        Example example = new Example();

        example.name = "shareprogramming.net";

        example.getName();
    }
}

Output:

Khoi tao object
Name la: shareprogramming.net

Nguyên tắc khai báo file class trong java

Trong Java, khi chúng ta khai báo một file class .java, ta sẽ cần chú ý những điều sau:

  • Trong một file .java, chúng ta chỉ có duy nhất một public class, và nhiều class non-public.
  • Tên public class phải giống với tên file .java
  • Thông thường một file .java nên chỉ có một class.
  • Chúng ta sẽ có thêm một số kiểu class nữa: abstract class, final class ect. Chúng ta sẽ tìm hiểu ở những phần sau.

Java packge

Package là một cách để chúng ta phân loại các class. Một package có thể chứa nhiều file class .java khác nhau, nhưng cùng chung một đặc điểm thường được mô tả bởi tên package. 

Package có kiến trúc phân tầng. Tất là package ông nội có thể package cha, package cha có thể chứa package con …

Khi ta import một class A để sử dụng trong class B. class A chứa trong package Y, và package Y chứa trong package X. chúng ta sẽ có cú pháp sau

import X.Y.A;

Trình dọn rác

Nếu như các bạn đã từng code qua C/C++ thì các bạn đã không ít lần gặp trục trặc với việc phải chủ động huỷ vùng nhớ của các object khi không cần dùng đến.

Java cho chúng ta một môi trường happy hơn rằng chúng ta không cần quan tâm đến việc huỷ vùng nhớ nữa. Thay vào đó sẽ có trình dọn rác giúp chúng ta làm chuyện đó.

Một object không còn các reference đến nó nữa, thì sẽ được trình dọn rác thu dọn. Lưu ý, một object có thể có nhiều reference đến.

Các bài viết liên quan

4 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x