黑马程序员技术交流社区

标题: 关于内部类的问题 [打印本页]

作者: 黑马11期李项京    时间: 2012-6-4 23:12
标题: 关于内部类的问题
class Pclassx {
protected void f(){
System.out.println("A's method");
}
public class Temp2 extends Pclassx{
protected void f(){
System.out.println("B's method");
}
}
public static void main(String[]args){
Pclassx a= new Temp2();
//为什么new Temp2() 会报错呢。

a.f(); }

}
作者: 黄昆    时间: 2012-6-4 23:29
必须是外围类对象.new,而不能是外围类.new
  


   public class First {  
public class Contents{  
    public void f(){  
       System.out.println("In Class First's inner Class Contents method f()");  
   }  
   public void getStr(){  
       System.out.println("First.str="+str);  
    }  
}  
  
public static void main(String [] args){  
   First first = new First();  
    First.Contents contents = first.new Contents();  
  contents.f();  
}  
}  
   

  必须通过外围类First的对象first来创建一个内部类的对象
  而且需要注意的是,在创建外围类对象之前,不可能创建内部类的对象(嵌套类除外)。
作者: 杨雪    时间: 2012-6-4 23:33
Temp2是内部类,实例化的时候要先实例化外部类
作者: 孙峰    时间: 2012-6-5 01:22
内部类创建对象时,不能直接用 new。根据老毕讲的:当内部类(Inner)在外部类(Outer)的成员位置时,且未被私有化。在该外部类中其他类中能直接创建对象。格式:外部类名.内部类名   变量名=外部类对象.内部类对象。  也就是:Pclassx.Temp2   pt=new Pclassx().new Temp2()  。按楼主的例子应该是想 多态吧:   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2