Lớp lồng nhau – lớp nội

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 54 - 55)

V. Xõy dựng Class trong Java

V.8Lớp lồng nhau – lớp nội

Có thờ̉ định nghĩa mụ̣t lớp bờn trong mụ̣t lớp khác. Lớp như vọ̃y gọi là lớp lụ̀ng (Nested Class) và được cài đặt như sau :

class EnclosingClass{ // Lớp bao bờn ngoài . . .

static class StaticNestedClass { // Lớp lụ̀ng tĩnh . . .

}

class InnerClass { // Lớp lụ̀ng phi tĩnh hay lớp nụ̣i bụ̣ . . .

} }

Lớp lụ̀ng chỉ được biờ́t bờn trong phạm vi của lớp bao bờn ngoài. Trỡnh biờn dịch Java sẽ báo lụ̃i nờ́u mụ̣t đoạn mã bṍt kỳ của lớp bờn ngoài truy cập trực tiờ́p lớp lụ̀ng.

Mụ̣t lớp lụ̀ng có quyờ̀n truy cọ̃p đờ́n các thành viờn của lớp bao bờn ngoài, thọ̃m chí nờ́u chúng được khai báo private. Tuy nhiờn, lớp bao khụng thờ̉ truy xuṍt các thành phõ̀n của lớp lụ̀ng.

Có hai kiờ̉u lớp lụ̀ng : tĩnh và phi tĩnh.

L

ớp lụ̀ng tĩnh (static nested class) được bụ̉ sung từ khoá static. Nó khụng thờ̉ tham chiờ́u trực tiờ́p đờ́n biờ́n hay phương thức đụ́i tượng được định nghĩa trong lớp bao, mà chỉ dùng chúng thụng qua đụ́i tượng. Vì giới hạn này nờn lớp lụ̀ng tĩnh ít được dùng. Hõ̀u hờ́t các lớp lụ̀ng là lớp nụ̣i bụ̣.

L

ớp lụ̀ng phi tĩnh (nonstatic nested class) khụng bụ̉ sung từ khoá static, còn được gọi là lớp nụ̣i bụ̣ (inner class). Nó có thờ̉ truy cọ̃p trực tiờ́p đờ́n các biờ́n và phương thức đụ́i tượng.

class Outer {

int outer_x = 100; void test() {

Inner inner = new Inner(); inner.display_x();

}

class Inner { // có thờ̉ truy xuṍt trực tiờ́p biờ́n đụ́i tượng của lớp Outer int inner_y = 10;

void display_x() {

} }

void display_y() { // khụng thờ̉ truy xuṍt biờ́n đụ́i tượng của lớp Inner System.out.println(“display : inner_y = “ + inner_y); // Error }

}

class InnerClassDemo {

public static void main(String args[]) { Outer outer = new Outer(); outer.test();

} }

Trong Java cú sử dụng một kỹ thuật cài đặt lớp nội nặc danh, tức là khụng cú tờn, khi xử lý cỏc sự kiện. Vớ dụ:

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent event) {

System.exit(0); }

public void windowIconified(WindowEvent e) {System.exit(0);} } );

Ở đõy, ta cú một lớp nặc danh kế thừa từ lớp WindowAdapter. Nú được khai bỏo chồng 2 phương thức của WindowAdapter. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 54 - 55)