我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合公式 > 方法内部类 >

如何理解外部其他类访问静态内部类中的方法new outerinner()func

归档日期:06-11       文本归类:方法内部类      文章编辑:爱尚语录

  我不能理解的是,静态内部类中为什么还能有非静态方法?被static修饰的类(内部类)怎么还能new 对象?

  为什么在没有外部类对象的情况下就能new内部类对象? 我能理解外部类访问静态内部类中的方法该是这样:

  /*虽然我写的这种方法是错误的,但是我认为这样才能让人理解啊,(先创建外部类对象,然后通过外部类对象去new内部类对象,然后访问内部类中的方法)。

  问题:访问一个类中的方法应该这样 new 类().function(); 而题目中的new outer.inner().function();根本就没有外部类实例啊,这怎么能访问到定义在外部类中的内部类(那就更无法访问内部类中的方法啊)?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部1 静态内部类中为什么还能有非静态方法?被static修饰的类(内部类)怎么还能new 对象?

  类是不是静态的和类中的方法是不是静态的没有绝对联系,类是静态的你可以这样用er,就好像使用Outer类的静态成员的方式一样

  你可以把Outer.Inne看作一个整体,就像C++的名称空间一样,现在要创建的是内部类的对象,它并不需要外部类的对象来创建,你可以把它们想象成两个完全不同的类,其中一个在另一个内部而已。

  new outer.inner()已经创建了一个内部类的对象,然后调用内部类对象的function(),调用内部类的function(),并不需要外部类的对象追问还有一点不太懂:

  1.静态是共享数据,那么为什么静态内部类可以创建对象?这样做不就破坏了共享了么(比如new了多个对象,每个对象都不一样)。

  ps:对此我有一种自己的理解不知道对不对?(创建静态类对象是因为静态类中有非静态方法)。

  2.如果我的理解正确,那么是不是就是说如果静态类中的方法和属性全都是静态的,那么该静态类就不能创建对象?追答.静态是共享数据,对的

  那么为什么静态内部类可以创建对象?这样做不就破坏了共享了么(比如new了多个对象,每个对象都不一样)。

  是不是静态的和能不能创建对象没有多大关系,静态的方法是不依赖与类成员的方法,静态类也是类似,只是它的调用方式和普通类不一样而已,其它方法和属性等和外部类都一样。

  知道合伙人教育行家采纳数:3996获赞数:31235喜欢理工科,我很10年从业经验,读过《操作系统原理》《C++ primer》《数据结构》等,现在公司向TA提问展开全部/*

  被static修饰的内部类也会加载到内存中,也就是说jvm会将硬盘上的Outer.class和

  Outer$Inner.class文件一起加载到内存中,这样可以把一个静态内部类理解为一个

  如果想要创建静态内部类的对象,因为已经被加载到内存中,随时可以创建静态内部类的对象

  因为内部类是静态的,所以不需要创建Outer的对象,只需要根据内部类的名字

  如果我们想要在其他类中调用内部类中的一般函数(非静态函数),必须要使用内部类的对象来调用,所以我们要创建内部类的对象,创建方式:

本文链接:http://renfriends.com/fangfanabulei/580.html