黑马程序员技术交流社区

标题: 关于:为什么静态方法可以调用内部类中的非静态方法,... [打印本页]

作者: 玥夜    时间: 2014-8-7 10:09
标题: 关于:为什么静态方法可以调用内部类中的非静态方法,...
本帖最后由 玥夜 于 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. }
复制代码


作者: ssy1939    时间: 2014-8-7 14:42
你这问题就问的不对, new Outer().show(); 是创建的Outer的匿名对象,然后用这个对象,调用的Oueter的静态show方法,这根本就不是调用的内部类Inter的方法.  并且,你这块因为show方法是静态的,可以直接通过类名Outer.show()就可以调用了
作者: liubea    时间: 2014-8-7 15:11
new Inter()不是创建一个该类对象,然后通过该对象调用方法,这当然是可以的
作者: 玥夜    时间: 2014-8-7 15:42
ssy1939 发表于 2014-8-7 14:42
你这问题就问的不对, new Outer().show(); 是创建的Outer的匿名对象,然后用这个对象,调用的Oueter的静态sho ...

额 我的问题就是问为啥show内可以调用静态内部类的的非静态方法
作者: ssy1939    时间: 2014-8-7 16:40
玥夜 发表于 2014-8-7 15:42
额 我的问题就是问为啥show内可以调用静态内部类的的非静态方法

在show方法里,  new Inter()  还是创建的匿名对象, 利用对象调用法, 没什么不可以吧! 就和你创建一个类后,再创建其对象,用对象既可以调用静态方法,也可以调用非静态方法一样
作者: pvting    时间: 2014-9-19 23:26
这个类就是静态类,可以直接调用内部的静态方法的把
作者: 踏雪风暴    时间: 2014-10-6 22:22
从生命周期分析 即可




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