NESTED CLASSES-HOW TO USE THEM ?
Ghi chú hướng dẫn.
Java programming chấp nhận trong mỗi class, chúng ta có thể viết thêm một hay nhiều classes khác có một tên chung là nested class.
Có 2 loại nested class :
* static nested class và non- static nested class.
* non- static nested class còn được gọi là INNER CLASS.
* class ngoài cùng gọi là OUTER CLASS.
* INNER CLASS viết trong OUTER CLASS.
* Trong bài nầy,người viết chọn OUTER CLASS là class Rextester để có thể xử dụng compiler của Rextester.com
class Outer {
………..
class static Nested {
…. . …. .. }
class Inner {
…. . …. }
}
Trong bài nầy chúng quan sát thí dụ cách xử dụng hai loại nested classes.
Tại sao chúng ta cần phải có nested class? Có vài lý do nhưng lý do chính là dể quản lý các code mặc dầu program hoạt động hơi chậm vì có nhiều classes.
---------------------------
Thí dụ đơn giản nested class.
1-Method hay function không có return
class Rextester{
static class Nested{
void display(){ // Method having no return
System.out.println(" Function display() is inside class Nested");}
}
public static void main(String[] args){
Nested ns= new Nested();
ns.display(); }
}
output.
Compilation time: 0.83 sec, absolute running time: 0.14 sec,
cpu time: 0.09 sec, memory peak: 21 Mb, absolute service time: 0.99 sec
Function display() is inside class Nested
2-Method hay function có return
class Rextester{
static class Nested{ // This is a nested class inside class Rextester
public String str =" Example of Nested Static Class in Java";
public String display(){ // Method having return type là String
return str; }
}
public static void main(String args[]){
Nested ns = new Nested();
System.out.println(ns.display());
}
}
output
Compilation time: 0.73 sec, absolute running time: 0.14 sec,
cpu time: 0.08 sec, memory peak: 23 Mb, absolute service time: 0.87 sec
Example of Nested Static Class in Java
3- Class có chứa 2 nested classes
class Rextester{
static class Nested{ // nested class number 1
public String str =" Hello Friends ! Đây thí dụ : Nested Static Class in Java";
public String display(){ // Method có return String type
return str;}
}
static class xaoKe{ // nested class number 2
public String str = " Holla Amigasos ! This is : Nested Static xaoKe Class in Java";
public String showUp(){ // Method có return String type
return str ;}
}
public static void main(String args[]){
Nested ns = new Nested();
System.out.println(ns.display());
xaoKe xk= new xaoKe();
System.out.println(xk.showUp()); }
}
output.
Compilation time: 0.83 sec, absolute running time: 0.14 sec,
cpu time: 0.08 sec, memory peak: 23 Mb, absolute service time: 0.98 sec
Hello Friends ! Đây thí dụ : Nested Static Class in Java
Hola Amigasos ! This is : Nested Static xaoKe Class in Java
4-CLASS CÓ CHỨA NESTED CLASS VÀ INNER CLASS.
Muốn call method của INNER CLASS phải tạo object cho INNER CLASS có tên oi tự do chọn như sau.
outerClass.InnerClass oi = new outerClass.new InnerClass();
Rồi call method.
thí dụ oi.display(); oi.showUp();
Trong bài nầy,người viết chọn outerClass là class Rextester để có thể xử dụng compiler của Rextester.com
------------------------
class Rextester{
static class Nested{
void display(){ // Method having no return
System.out.println(" Đây là method display() chứa trong class Nested");}
}
class Inner{
public String str =" Đây là String chứa trong inner class";
public String showUp( ){
return str;}
}
public static void main(String[] args){
Nested ns= new Nested();
ns.display();
// call method showUp() như sau
Rextester.Inner oi = new Rextester().new Inner();
System.out.println(oi.showUp());}
}
OUTPUT.
Compilation time: 0.72 sec, absolute running time: 0.13 sec,
cpu time: 0.07 sec, memory peak: 23 Mb, absolute service time: 0.86 sec
Đây là function chứa trong class Nested
Đây là String chứa trong inner class
5- INNER CLASS
Method của INNER CLASS có thể xử dụng variables của OUTER CLASS.
Thí Dụ
class Rextester {
int x = 2015;
private String str1 = "Henry Duong is living in California";
public String str2 = "Bolsa Markets are very attractive !";
protected String str3 = "Hello Friends Around The World ! Please come to see them";
class Inner {
void display() {
System.out.println( x + "\n " + str1 + "\n " + str2+ "\n " + str3); }
}
public static void main(String[] args){
Rextester.Inner oi = new Rextester().new Inner();
oi.display();}
}
OUTPUT.
Compilation time: 0.73 sec, absolute running time: 0.13 sec,
cpu time: 0.07 sec, memory peak: 23 Mb, absolute service time: 0.86 sec
2015
Henry Duong is living in California,USA
Bolsa Markets are very attractive !
Hello Friends Around The World ! Please come to see them.
Permanent link: http://rextester.com/GENA85861