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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯心程 黑马帝   /  2012-5-15 01:19  /  2196 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


我记着不是Outer.Inner().XX(); 这个不是静态的
                   Outer.Inner.XX(); 这个是静态的所以能直接访问

求解不懂 怎么就根据function() 就确定 它是static的了呢?

5 个回复

倒序浏览
内部类可以直接访问外部类中的成员,包括私有成员。
但是被Static修饰的内部类只能调用外部的静态方法。
因为function直接被test外部类调用而判断function是被static修饰的

回复 使用道具 举报
new Test.function().method();

如果inner类不是静态的话
static inter function(){
       new Test().new Inner();
}
回复 使用道具 举报
new Test.function().method();

如果inner类不是静态的话
static inter function(){
       new Test().new Inner();
}
回复 使用道具 举报
本帖最后由 冯心程 于 2012-5-15 03:31 编辑
nailsoul 发表于 2012-5-15 01:45
new Test.function().method();

如果inner类不是静态的话

手一抖 发两个、、3Q
回复 使用道具 举报
崔陈喜 发表于 2012-5-15 01:40
内部类可以直接访问外部类中的成员,包括私有成员。
但是被Static修饰的内部类只能调用外部的静态方法。
因 ...

不看这些恼人的理论 单从逻辑上来说 是不是可以这么理解
①编译的时候如果function不是静态的 那么还没有被实例化的test是不认识function是什么东西的  但是如果function是static的就事先就存在了 那么即便是test还没有被实例化也认识function这个东西   
  ②编译的时候如果test已经被new了 那么它就知道里面有个function ,function就不需是静态的了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马