首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

爪哇的。内部类。该怎么解决

2012-01-16 
爪哇的。。。。内部类。。。。先上段代码。。。Java codeabstract class Contents{abstract public int value()}inte

爪哇的。。。。内部类。。。。
先上段代码。。。

Java code
abstract class Contents{  abstract public int value();}interface Destination{    String readLable();}public class Parcel3 {  private class PContents extends Contents{      private int i = 11;      public int value(){          return i;      }  }  protected class PDestination implements Destination {      private String label;      private PDestination(String whereTo){          label = whereTo;      }      public String readLabel(){          return label;          }  }  public Destination dest(String s){      return new PDestination(s);  }  public Contents cont(){      return new PContents();  }}class Testsss {    public static void main(String[] args){        Parcel3 p = new Parcel3();        Contents c = p.cont();        Destination d = p.dest("Tanzania");        Parcel3.PDestination s = new PDestination();    }}

问:【1】最后一句的Parcel3.PDestination s = new PDestination();无法编译 PDestination();报错 ,为什么会这样呢?PDestination内部类不是protected吗 ? 那么包类的其他类也可以访问啊 左边的Parcel3.PDestination都可以 ,为什么右边Parcel3.PDestination这样的话却不行呢? 难道不能用new创建PDestination对象?为什么?
  【2】内部类到底是怎么回事啊 我在看Java编程思想 感觉说的不清不楚的 【3】 还有访问到底是什么意思呢?看到内部类这 突然感觉自己连如何判断访问性都不懂。。。。迷糊了。。。

[解决办法]
Parcel3 p = new Parcel3();
Parcel3.PDestination s = p.new PDestination();

没啥好搞的...写法规则而已...
[解决办法]
内部类只有父类可以调用吧~
[解决办法]
看看如何实例化内部类你的问题就迎刃而解了
[解决办法]
new PDestination();你的内部类没有这样的构造器,要写成这样:p.new PDestination(“数据”);
[解决办法]
探讨

Parcel3.PDestination s = new PDestination();
……

热点排行