Nested classes are divided into two categories: static and non-static.
1. Nested classes that are declared static are called static nested classes.
2. Non-static nested classes are called inner classes.
outer class与inner class的之间能互相使用field或者method吗?
可以。
代码如下:
package FFtest2;
public class FFOuter {
private String first;
private int second;
public FFOuter(String l, int r) {
first = l;
second = r;
}
public String addStringInteger(String first, int second) {
return first + Integer.toString(second);
}
/**
* test1
* Outter class has access to inner private field
* Outter class has access to inner method
*/
public void outterPrint() {
FFOuter.InnerDisplay temp = this.new InnerDisplay("frog", 20);
System.out.println("Outer class uses Inner class field : " + temp.innerFirst + ", " + temp.innerSecond);
temp.print(first, second);
}
private class InnerDisplay {
private String innerFirst;
private int innerSecond;
public InnerDisplay() {
this("Somebody", 0);
}
public InnerDisplay(String s, int i) {
innerFirst = s;
innerSecond = i;
}
public void print (String f, int s) {
System.out.println("Inner class: first = " + f+ ", second = " + s);
}
/**
* test 2
* Inner class has access to outer class private field
*/
public void print () {
System.out.println("Inner class uses outer class: first = " + first+ ", second = " + second);
}
/**
* test 3
* Inner class has access to outer class method.
*/
public String add(String first, int second)
{
return addStringInteger(first, second);
}
}
public static void main (String [] args){
/**
* test 4
* in main(), call outter method
* */
FFOuter outter = new FFOuter("zebra", 25);
outter.outterPrint();
/**
* test 5
* in main(), call inner method
*/
InnerDisplay innerDisplay = outter.new InnerDisplay();
innerDisplay.print();
System.out.println(innerDisplay.add("iphone", 10));
}
}
输出结果
Outer class uses Inner class field : frog, 20
Inner class: first = zebra, second = 25
Inner class uses outer class: first = zebra, second = 25
iphone10
本文深入探讨了Java中内部类与外部类之间的交互机制,通过具体示例代码展示了内外类如何访问对方的私有字段和方法。同时,文章还介绍了静态嵌套类与非静态内部类的区别,并提供了丰富的实例说明。
10万+

被折叠的 条评论
为什么被折叠?



