您好!欢迎来到北极熊

北极熊

热门搜索: 任正非传    神雕侠侣    红楼梦   

java内部类实例化方法及出错如何解决

分类:人工智能与机器学习 时间:2022-11-09 20:22 浏览:300
概述
1.内部类实例化方法如果内部类未声明为static,在实例化时首先需要new一个外部类的对象。并通过p.new Inner()的方式new 内部类,表明这个内部类指向该外部类。内部类的class类型为:Parent.Inner,而不是p.Inner,这个需要和new的方式区分开。 JavaScriptpublic class Test {   public stat
内容

1.内部类实例化方法

如果内部类未声明为static,在实例化时首先需要new一个外部类的对象。并通过p.new Inner()的方式new 内部类,表明这个内部类指向该外部类。内部类的class类型为:Parent.Inner,而不是p.Inner,这个需要和new的方式区分开。

 JavaScript

public class Test { 
 public static void main(String[] args) { 
  Parent p = new Parent(); 
  Parent.Inner i = p.new Inner(); 
  i.print(); 
 } 
  } 
  class Parent { 
 class Inner { 
  public void print() { 
   System.out.println("xxx"); 
  } 
 } }

2.实例化出错解决

设是想在main方法中运行这一段代码,那么即便正确写对了main方法,依然是不能运行的。内部类有一个隐式的成员指向外部对象,在构造的时候赋值。所以普通的类默认构造方法是无参的,但是内部类的默认构造方法有一个参数,这个参数就是为了给指向外围对象的成员属性初始化。

 JavaScript

class A{ 
    class B{} } 
  $ javap -p a.b 
Warning: Binary file a.b contains com.test.A$B 
Compiled from "Test.java" class com.test.A$B { 
  final com.test.A this$0; //这就是指向外围的成员 
  com.test.A$B(com.test.A); //这个默认构造方法和你想象的不一样吧 }

那么这种情况下,static代码块肯定是不行。



评论
资讯正文页右侧广告
联系我们
电话:18936411277
邮箱:1044412291@qq.com
时间:09:00 - 19:00
公众号:北格软件
底部广告