1、内部类访问外部类的成员和方法
在内部类中,可以无障碍地访问外部类的所有成员和方法。
在下面的实验代码中,可以看到,内部类sl可以访问外部类的私有成员:sz
和
cur.
同时可以访问私有方法:privatePrintCur();
2、外部类访问内部类的成员和方法
在外部类中,同样可以自由访问内部类的成员和方法。
在实验代码中,外部类可以访问内部类的私有成员:在printCur方法中访问私有成员cur.
3、实验代码
www.yztrans.com
[java] view plaincopy
// CommunicationTest.java
//
To test the communication of
// outter class and inner
class.
package blog.pdcxs007.innerClass;
interface selector
{
boolean hasNext();
Object current();
int
next();
}
class Sequence {
private int
size;
private Object[] sq;
private int cur =
0;
public Sequence(int sz) {
size = sz;
sq = new
Object[sz];
}
public void add(Object obj) {
if (cur
< size)
sq[cur++] = obj;
}
class sl implements
selector {
private int cur = 0;
public boolean hasNext()
{
return cur < size;
}
public Object current()
{
//System.out.println("In
selector.current()");
privatePrintCur(this);
//System.out.println("Out");
return
sq[cur];
}
public int next() {
return
cur++;
}
}
public selector getSelector()
{
return new sl();
}
public void printCur(sl slc)
{
System.out.println("Current is: " +
slc.cur);
}
private void privatePrintCur(sl slc)
{
System.out.println("Current is: " +
slc.cur);
}
}
public class CommunicationTest
{
public static void main(String[] args) {
Sequence sq = new
Sequence(5);
selector slc = sq.getSelector();
for(int i = 0; i
< 5; i++)
sq.add(Integer.toString(i));
while(slc.hasNext())
{
System.out.println(slc.current());
sq.printCur((Sequence.sl)
slc);
slc.next();
}
}
} www.lefeng123.com
原文:http://www.cnblogs.com/tianchaoy/p/3555603.html