[Học lập trình Java] Đối tượng và lớp trong Java

Java là một ngôn ngữ hướng đối tượng. Với đặc trưng là một ngôn ngữ hướng đối tượng, Java hỗ trợ các khái niệm cơ bản sau:

– Tính đa hình

– Tính kế thừa

– Tính đóng gói

– Tính trừu tượng

– Các class (lớp)

– Đối tượng

– Instance

– Phương thức

– Parse thông điệp (Message Parsing)

Bây giờ chúng ta hãy dành một ít thời gian xem xét những gì lớp (class) và đối tượng (object) trong Java:

Đối tượng trong Java

Trong thế giới thực, chúng ta có thể thấy rất nhiều đối tượng xung quanh chúng ta như Car, dog, human, …. Tất cả đối tượng này đều có một trạng thái và hành vi.

Nếu chúng ta so sánh đối tượng của phần mềm máy tính với đối tượng trong thế giới thực, chúng có rất nhiều đặc tính chung.

Các đối tượng của phần mềm máy tính cũng có một trạng thái và hành vi. Một trạng thái của đối tượng của phần mềm máy tính được lưu giữ trong các trường và các hành vi được hiển thị thông qua các phương thức.

Vì thế trong phát triển phần mềm, các phương thức điều hành trên trạng thái nội bộ của một đối tượng và giao tiếp giữa các đối tượng được thực hiện thông qua các phương thức.

Lớp trong Java

Một lớp là một bản thiết kế từ đó các đối tượng đơn được tạo ra.

Dưới đây là ví dụ về một lớp:

public class Dog{

   String breed;

   int age;

   String color;

   void barking(){

   }

   void hungry(){

   }

   void sleeping(){

   }

}

Một lớp có thể chứa bất kỳ loại biến sau:

Biến Local: Các biến được định nghĩa bên trong các phương thức, constructor hoặc block code được gọi là biến Local. Biến này sẽ được khai báo và khởi tạo bên trong phương thức và biến này sẽ bị hủy khi phương thức đã hoàn thành.

Biến Instance: Các biến instance là các biến trong một lớp nhưng ở bên ngoài bất kỳ phương thức nào. Những biến này được khởi tạo khi lớp này được tải. Các biến instance có thể được truy cập từ bên trong bất kỳ phương thức, constructor hoặc khối nào của lớp cụ thể đó.

Biến Class: Các biến class là các biến được khai báo với một lớp, bên ngoài bất kỳ phương thức nào, với từ khóa static.

Một lớp có thể có bất kỳ các phương thức nào để truy cập giá trị của các phương thức đa dạng. Trong ví dụ trên, barking(), hungry(), và sleeping() là các phương thức.

Một số chủ đề quan trọng cần được bàn luận khi xem xét về các lớp trong ngôn ngữ Java:

Constructor trong Java

Khi bàn luận về các lớp, một trong những chủ đề quan trọng là các constructor. Mỗi lớp có một constructor. Nếu chúng ta không viết một constructor một cách rõ ràng cho một lớp thì bộ biên dịch Java xây dựng một constructor mặc định cho lớp đó.

Mỗi khi một đối tượng mới được tạo ra, ít nhất một constructor sẽ được gọi. Quy tắc chính của các constructor là chúng có cùng tên như lớp đó. Một lớp có thể có nhiều hơn một constructor.

Sau đây là ví dụ về một constructor:

public class Puppy{

   public Puppy(){

   }

   public Puppy(String name){

      // This constructor has one parameter, name.

   }

}

Java cũng hỗ trợ Các lớp Singleton trong Java, ở đây bạn sẽ có thể tạo chỉ một instance của một lớp.

Tạo một đối tượng trong Java

Một lớp cung cấp bản thiết kế cho các đối tượng, vì thế, về cơ bản, một đối tượng được tạo từ một lớp. Trong Java, từ khóa new được sử dụng để tạo một đối tượng mới.

Có ba bước khi tạo một đối tượng từ một lớp:

Khai báo: Một khai báo biến với một tên biến với một loại đối tượng.

Cài đặt: Từ khóa new được sử dụng để tạo đối tượng

Khởi tạo: Từ khóa new được theo sau bởi một lời gọi một constructor. Gọi hàm này khởi tạo đối tượng mới.

Dưới đây là ví dụ về tạo một đối tượng:

public class Puppy{

   public Puppy(String name){

      // This constructor has one parameter, name.

      System.out.println(“Passed Name is :” + name );

   }

   public static void main(String []args){

      // Following statement would create an object myPuppy

      Puppy myPuppy = new Puppy( “tommy” );

   }

}

Nếu chúng ta biên dịch và chạy chương trình, nó sẽ cho kết quả sau:

Passed Name is :tommy

Truy cập các biến instance và các phương thức trong Java

Các biến instance và các phương thức được truy cập thông qua các đối tượng được tạo. Để truy cập một biến instance, path sẽ là như sau:

/* First create an object */

ObjectReference = new Constructor();

/* Now call a variable as follows */

ObjectReference.variableName;

/* Now you can call a class method as follows */

ObjectReference.MethodName();

Ví dụ:

Ví dụ này giải thích cách để truy cập các biến instance và các phương thức của một lớp:

public class Puppy{

   int puppyAge;

   public Puppy(String name){

      // This constructor has one parameter, name.

      System.out.println(“Passed Name is :” + name );

   }

   public void setAge( int age ){

       puppyAge = age;

   }

   public int getAge( ){

       System.out.println(“Puppy’s age is :” + puppyAge );

       return puppyAge;

   }

   public static void main(String []args){

      /* Object creation */

      Puppy myPuppy = new Puppy( “tommy” );

      /* Call class method to set puppy’s age */

      myPuppy.setAge( 2 );

      /* Call another class method to get puppy’s age */

      myPuppy.getAge( );

      /* You can access instance variable as follows as well */

      System.out.println(“Variable Value :” + myPuppy.puppyAge );

   }

}

Biên dịch và thực thi chương trình sẽ cho kết quả sau:

Passed Name is :tommy

Puppy’s age is :2

Variable Value :2

Các quy tắc khai báo file nguồn trong Java

Các quy tắc khai báo file nguồn là thiết yếu khi khai báo các lớp, lệnh import và package trong file nguồn.

– Có thể chỉ có một lớp public cho mỗi file nguồn.

– Một file nguồn có thể có nhiều lớp không phải lớp public.

– Tên lớp public nên là tên của file nguồn, và cũng nên được phụ thêm đuôi .java ở cuối. Ví dụ: tên lớp là .public class Employee{}, thì file nguồn nên là Employee.java.

– Nếu lớp được định nghĩa bên trong một package, thì lệnh package nên là lệnh đầu tiên trong file nguồn.

– Nếu các lệnh import có mặt, khi đó chúng phải được viết giữa lệnh package và khai báo lớp. Nếu không có lệnh package nào, thì lệnh import nên là dòng đầu tiên trong file nguồn.

– Các lệnh import và package sẽ bao hàm tới tất cả các lớp có mặt trong file nguồn. Nó là có thể để khai báo các lệnh import và/hoặc lệnh package tới các lớp khác nhau trong file nguồn.

Các lớp có các mức truy cập khác nhau và có nhiều loại lớp khác nhau như các lớp trừu tượng, các lớp final, … Ngoài những loại lớp trên, Java cũng có các lớp đặc biệt được gọi là các lớp Inner và các lớp nặc danh (Anonymous).

Package trong Java

Về cơ bản, nó là cách phân loại các lớp và các interface. Khi phát triển các ứng dụng trong Java, hàng trăm lớp và interface sẽ được viết, vì thế việc phân loại những lớp này là điều cần phải làm cũng như làm cho cuộc sống đơn giản hơn.

Các lệnh import trong Java

Trong Java, nếu một tên đủ điều kiện, mà bao gồm tên package và tên lớp, được cung cấp thì khi đó, bộ biên dịch có thể dễ dàng xác định vị trí của các lớp và code nguồn. Lệnh import là một cách cung cấp vị trí chính xác cho bộ biên dịch để nó tìm ra lớp cụ thể đó.

Với chia sẻ trên chắc bạn đã có thể mường tượng trong đầu một bức tranh rõ ràng về đối tượng và các class là gì trong Java.

Còn nếu bạn muốn cải thiện và tìm hiểu về ngôn ngữ Java, hãy tham khảo qua khóa học lập trình Java tại www.stanford.com.vn

 

Nhận xét