Friday, August 7, 2020

Lớp lồng nhau(inner class) trong java

 Lớp lồng nhau(inner class) trong java là một trong những bài học lập trình hướng đối tượng nó được khai báo trong lớp (class) hoặc interface, bên cạnh đó nó được sử dụng innẻ class để nhóm các lớp lại với nhau theo một cách ngắn ngọn và hợp lý nhất, theo một cách logic để giúp code của bạn dễ dàng quản lý nhất có thể.

inner class trong java


Cú pháp của inner class

class OuterClass {

    // ...

    class NestedClass {

        // ...

    }

}

Các ưu điểm của inner class trong java:

  • Inner class biển diễn cho một kiểu đặc biệt của mối quan hệ đó là nó có thể truy cập tất cả các thành viên (các thành viên dữ liệu và các phương thức) của lớp ngoài bao gồm cả private.
  • Inner class được sử dụng để giúp code dễ đọc hơn và dễ bảo trì bởi vì nó nhóm các lớp và các interface một cách logic vào trong một nơi.
  • Code được tối ưu hóa: tiết kiệm code hơn.

Có hai loại lớp lồng nhau mà bạn có thể tạo trong Java.

  • Lớp lồng nhau không tĩnh (lớp bên trong)
  • Lớp lồng nhau tĩnh

Lớp lồng nhau non-static (inner class):

Member Inner Class: Một lớp được tạo ra bên trong một lớp và bên ngoài phương thức.

Annomynous Inner Class: Một lớp được tạo ra để implements interface hoặc extends class. Tên của nó được quyết định bởi trình biên dịch java.

Local Inner Class: Một lớp được tạo ra bên trong một phương thức.

Lớp lồng nhau Static:

Member Inner Class: Một lớp được tạo ra bên trong một lớp và bên ngoài phương thức.

Anonymous Inner Class: Một lớp được tạo ra để implements interface hoặc extends class. Tên của nó được quyết định bởi trình biên dịch java.

Local Inner Class: Một lớp được tạo ra bên trong một phương thức.

Static Nested Class: Một lớp static được tạo ra bên trong một lớp.

Nested Interface: Một interface được tạo ra bên trong một lớp hoặc một interface.

Ví dụ inner class trong java

class CPU {

    double price;

    class Processor{


        double cores;

        String manufacturer;


        double getCache(){

            return 4.3;

        }

    }

    protected class RAM{


        double memory;

        String manufacturer;


        double getClockSpeed(){

            return 5.5;

        }

    }

}


public class Main {

    public static void main(String[] args) {

        CPU cpu = new CPU();

        CPU.Processor processor = cpu.new Processor();

        CPU.RAM ram = cpu.new RAM();

        System.out.println("Processor Cache = " + processor.getCache());

        System.out.println("Ram Clock speed = " + ram.getClockSpeed());

    }

}

Kết quả:

Processor Cache = 4.3

Ram Clock speed = 5.5 

No comments:

Post a Comment