對於Java內部類
Java內部類其實在J
內部類的聲明
內部類所做的功能使用外部類也同樣可以實現
內部類按照其所在位置不同
一
格式為
比如要創建一個內部類iner對象
Outer outer = new Outer();
Outer
/**
* 內部類創建與初始化
*
* @author leizhimin
*/
public class Outer {
private int i =
private int y =
Outer() {
System
}
public void sayMsg() {
System
}
class Inner {
int i =
Inner() {
System
}
void innerMsg() {
System
sayMsg();
//訪問內部類自己的成員i
this
//訪問外部類的成員 i和y
Outer
y
}
int getI() {
return i;
}
}
public void test() {
Inner in = new Inner();
in
}
public int getI() {
return i;
}
public void setI(int i) {
this
}
}
class Test
public static void main(String[] args) {
Outer outer = new Outer();
outer
System
System
Outer
iner
System
System
System
}
}
運行結果
調用Outer構造方法
調用Inner構造方法
>>>>>Inner class! Outer class!
調用Inner構造方法
>>>>>Inner class! Outer class!
二
public interface Foo{
void say();
}
public interface Bar {
void readme();
}
/**
* 內部類實現接口
*
* @author leizhimin
*/
public class Test
public static void main(String[] args) {
Outer outer = new Outer();
Foo f = outer
Bar b = outer
f
b
}
}
class Outer {
private class FooImpl implements Foo {
public void say() {
System
}
}
private class BarImpl implements Bar {
public void readme() {
System
}
}
public Foo genFoo() {
return new FooImpl();
}
public Bar genBar() {
return new BarImpl();
}
}
輸入結果
say foo!
say bar!
Process finished with exit code
三
外部類分兩種
一種嵌入了內部類聲明代碼外部類
在同一個直接外部類中
在外部類中
/**
* 內部類實現接口
*
* @author leizhimin
*/
public class Test
public static void main(String[] args) {
Outer o = new Outer();
Outer
b
}
}
class Outer {
protected class Foo {
protected void say() {
System
}
private void test() {
System
}
}
protected class Bar {
protected void readme() {
System
new Foo()
}
}
public Foo genFoo() {
return new Foo();
}
public Bar genBar() {
return new Bar();
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26152.html