A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马11期李项京 中级黑马   /  2012-6-4 23:12  /  1687 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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(); }

}

3 个回复

倒序浏览
必须是外围类对象.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来创建一个内部类的对象
  而且需要注意的是,在创建外围类对象之前,不可能创建内部类的对象(嵌套类除外)。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Temp2是内部类,实例化的时候要先实例化外部类
回复 使用道具 举报
内部类创建对象时,不能直接用 new。根据老毕讲的:当内部类(Inner)在外部类(Outer)的成员位置时,且未被私有化。在该外部类中其他类中能直接创建对象。格式:外部类名.内部类名   变量名=外部类对象.内部类对象。  也就是:Pclassx.Temp2   pt=new Pclassx().new Temp2()  。按楼主的例子应该是想 多态吧:   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马