メンバー内部クラス、ローカル内部クラス、静的内部クラス、匿名内部クラス
4307 ワード
メンバーの内部クラス
静的内部クラス
ローカル内部クラス
匿名の内部クラス
class Demo1_InnerClass {
public static void main(String[] args) {
//Inner i = new Inner();
//i.method();
// . = .
Outer.Inner oi = new Outer().new Inner(); //
oi.method();
}
}
/*
* A:
* B:
* a: , 。
* b: , 。
* . = . ;
*
*/
class Outer {
private int num = 10;
class Inner {
public void method() {
System.out.println(num);
}
}
}
class Demo2_InnerClass {
public static void main(String[] args) {
//Outer.Inner oi = new Outer().new Inner();
//oi.method();
Outer o = new Outer();
o.print();
}
}
class Outer {
private int num = 10;
private class Inner {
public void method() {
System.out.println(num);
}
}
public void print() {
Inner i = new Inner();
i.method();
}
}
class Test1_InnerClass {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
// : , 30,20,10。
// , .this
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer.this.num);
}
}
}
静的内部クラス
class Demo1_InnerClass {
public static void main(String[] args) {
// . = . ;
Outer.Inner oi = new Outer.Inner();
oi.method();
Outer.Inner2.print();
}
}
class Outer {
static class Inner {
public void method() {
System.out.println("method");
}
}
static class Inner2 {
public static void print() {
System.out.println("print");
}
}
}
ローカル内部クラス
class Demo1_InnerClass {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}
//
class Outer {
public void method() {
final int num = 10;
class Inner {
public void print() {
System.out.println(num);
}
}
Inner i = new Inner();
i.print();
}
/*public void run() {
Inner i = new Inner(); // ,
i.print();
}*/
}
匿名の内部クラス
class Demo1_NoNameInnerClass {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}
/*
* A:
* 。
* B: :
* 。
* C: :
*
new (){
;
}
* D: ?
* 。
*
*/
interface Inter {
public void print();
}
class Outer {
class Inner implements Inter {
public void print() {
System.out.println("print");
}
}
public void method(){
//Inner i = new Inner();
//i.print();
//new Inner().print();
//Inter i = new Inner(); //
new Inter() { // Inter
public void print() { //
System.out.println("print");
}
}.print();
}
}
class Demo2_NoNameInnerClass {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}
interface Inter {
public void show1();
public void show2();
}
//
class Outer {
public void method() {
/*new Inter(){
public void show1() {
System.out.println("show1");
}
public void show2() {
System.out.println("show2");
}
}.show1();
new Inter(){
public void show1() {
System.out.println("show1");
}
public void show2() {
System.out.println("show2");
}
}.show2();*/
Inter i = new Inter(){
public void show1() {
System.out.println("show1");
}
public void show2() {
System.out.println("show2");
}
/*public void show3() {
System.out.println("show3");
}*/
};
i.show1();
i.show2();
//i.show3(); // ,
}
}
class Test2_NoNameInnerClass {
public static void main(String[] args) {
//Outer.method().show(); // , ,
Inter i = Outer.method();
i.show();
}
}
// ,
interface Inter {
void show();
}
class Outer {
//
public static Inter method() {
return new Inter() {
public void show() {
System.out.println("HelloWorld");
}
};
}
}
// ”HelloWorld”