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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 玥夜 于 2014-8-8 20:14 编辑
  1. public final class test {        
  2.         public static void main(String[] args)
  3.         {
  4.                 new Outer().show();
  5.         }
  6. }        
  7. class Outer
  8. {
  9.         public static void show()
  10.         {
  11.                 new Inter().method<font color="red">();//为什么此处可以调用非静态方法呢</font>
  12.         }               
  13.         static class Inter        
  14.         {                        
  15.                 public void method()                        
  16.                 {
  17.                         System.out.println("haha");               
  18.                 }        
  19.         }
  20. }
复制代码

6 个回复

倒序浏览
你这问题就问的不对, new Outer().show(); 是创建的Outer的匿名对象,然后用这个对象,调用的Oueter的静态show方法,这根本就不是调用的内部类Inter的方法.  并且,你这块因为show方法是静态的,可以直接通过类名Outer.show()就可以调用了
回复 使用道具 举报
new Inter()不是创建一个该类对象,然后通过该对象调用方法,这当然是可以的
回复 使用道具 举报
ssy1939 发表于 2014-8-7 14:42
你这问题就问的不对, new Outer().show(); 是创建的Outer的匿名对象,然后用这个对象,调用的Oueter的静态sho ...

额 我的问题就是问为啥show内可以调用静态内部类的的非静态方法
回复 使用道具 举报
玥夜 发表于 2014-8-7 15:42
额 我的问题就是问为啥show内可以调用静态内部类的的非静态方法

在show方法里,  new Inter()  还是创建的匿名对象, 利用对象调用法, 没什么不可以吧! 就和你创建一个类后,再创建其对象,用对象既可以调用静态方法,也可以调用非静态方法一样
回复 使用道具 举报
这个类就是静态类,可以直接调用内部的静态方法的把
回复 使用道具 举报
从生命周期分析 即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马