黑马程序员技术交流社区
标题: 关于内部类中的问题 [打印本页]
作者: 山水游客 时间: 2012-5-24 15:02
标题: 关于内部类中的问题
class Outer
{
static int x = 3;
class Inner
{
int x = 4;
//static void function() //error ?
void function()
{
int x = 5;
// System.out.println("inner :" +Outer.this.x);
System.out.println("inner :" + x);
}
}
//static void method() //true
void method()
{
System.out.println(x);
}
}
public class innerClassDemo
{
public static void main(String[] args)
{
//Outer.method(); //在方法名前添加static直接调用
Outer out= new Outer();
out.method();
Outer.Inner inner = new Outer().new Inner();
inner.function();
}
}问题
1. 在main方法中调用类中的方法,一般都会先实例化一个对象,再调用方法实现相应的功能,为什么不能在方法前面加上static 直接通过类名.方法名去实现功能呢?这样岂不是更好。
2. 同样的思路,为什么外部类的方法可以在前面添加static 而内部类方法前不能添加呢?
作者: 马林贺 时间: 2012-5-24 15:15
1. 如果所有的方法都加上了static 修饰方法名字的话,就是相当于,你们家的东西都是公有的,谁想用就可以用了,你不纠结吗?
创建对象调用,就是只有你 可以用自己家的东西。
2. 要是在内部类里面加static 方法 ,你必须也要把 类 static 就可以再内部类里写 static方法了。
作者: 小小企鹅 时间: 2012-5-24 16:16
本帖最后由 小小企鹅 于 2012-10-27 22:42 编辑
1.静态方法在程序启动时放在内存中,这样也可以调用方法
2.static方法只能在:static修饰的类内部类声明,或者在顶层类声明
class Outer{
static class Inner{
static void fun(){
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |