非静态类中为什不能定义静态方法
来源:互联网 发布:i3 2100安装Mac OS 编辑:程序博客网 时间:2024/06/06 02:30
回答方案一:因为静态方法是可以直接调用的,既不创建对象也可以直接调用。而非静态的内部类,它属于外部类的一个成员类。需要先创建它的实例以后才能调用它的方法,当你创建了外部类以后,它的内部类是不存在的,所以你不能在那个对象没有之前就调用它的,就好想,是一个实际存在的东西和一个虚拟存在的东西一样,实际存在的 东西是不能被虚拟存在的东西所具有的。我可能说的不太明白,你也可以用java的类的定义的要求去推证它的不成立,你会发现那是矛盾的。如果你在非静态的内部类里包含静态的方法。
回答方案二:静态变量是要占用内存的,在编译时只要是定义为静态变量了,系统就会自动分配内存给他,而内部类是在宿主类编译完编译的,也就是说,必须有宿主类存在后才能有内部类,这也就和编译时就为静态变量分配内存产生了冲突,因为系统执行:运行宿主类->静态变量内存分配->内部类,而此时内部类的静态变量先于内部类生成,这显然是不可能的,所以不能定义静态变量!
0 0
- 非静态类中为什不能定义静态方法
- 方法何时定义为静态或非静态的
- Java中为什么静态方法不能访问非静态方法
- java非静态方法为什么不能被子类覆盖为静态方法
- 静态方法中不能使用非静态变量
- java静态方法中不能引用非静态变量
- Java中静态方法不能引用非静态变量
- 类的静态方法(函数)中为什么不能调用非静态成员(属性)?
- 类的静态方法(函数)中为什么不能调用非静态成员(属性)?
- static方法中不能调用非静态方法(easy)
- 静态方法中调用非静态方法
- 静态方法中调用非静态方法
- 静态方法中调用非静态方法
- 静态方法中调用非静态方法
- 静态方法中调用非静态方法
- 静态方法中调用非静态方法
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
- 静态方法不能调用非静态变量,非静态方法可以引用静态变量
- android创建快捷方式
- CI框架之视频上传
- PHP中单引号和双引号的区别
- C++(一)
- muduo:线程池
- 非静态类中为什不能定义静态方法
- (OK)(www.nrl.navy.mil) OSPF MANET Designated Routers (OSPF-MDR) Implementation
- 自定义类归档
- Python3标准库简介
- 【BZOJ 3157】【BZOJ 3516】国王奇遇记
- mysql查找配置文件的顺序
- python 之切片的另一个使用方式
- iOS学习- 23 Core Data by Tutorials - CH03
- Java调用动态链接库-扩展