社区
Java SE
帖子详情
请教:为什么在非静态内部类中不能有静态方法,静态属性,静态初始化块?
iammingbohello
2008-12-12 08:24:35
问题如标题。
...全文
265
15
打赏
收藏
请教:为什么在非静态内部类中不能有静态方法,静态属性,静态初始化块?
问题如标题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iammingbohello
2008-12-14
打赏
举报
回复
顶上去
wm920
2008-12-13
打赏
举报
回复
[Quote=引用 7 楼 iammingbohello 的回复:]
引用 5 楼 Wing198812 的回复:
首先,static的变量或方法属于这个类本身,它会一直存在直到你的程序结束,
所以,一般应该是以类名来直接调用的(当然自身的对象也可以);
而对于一个非static的内部类,它首先是外层类的一个成员,必须存在外层类的对象才可以使它实例化,所以,假设当这个内部类中可以存在某些静态的属性
或方法,那么它自己还是绝对不能以它的类名来访问或者调用的。
因此:SUN的JDK干脆规定,非静态…
[/Quote]
只能说答案算对1/10
m113388
2008-12-13
打赏
举报
回复
study
iammingbohello
2008-12-13
打赏
举报
回复
顶一下
iammingbohello
2008-12-13
打赏
举报
回复
顶一下
iammingbohello
2008-12-13
打赏
举报
回复
再顶顶
finnyuan
2008-12-12
打赏
举报
回复
不错!顶一下
iammingbohello
2008-12-12
打赏
举报
回复
up一下
iammingbohello
2008-12-12
打赏
举报
回复
[Quote=引用 5 楼 Wing198812 的回复:]
首先,static的变量或方法属于这个类本身,它会一直存在直到你的程序结束,
所以,一般应该是以类名来直接调用的(当然自身的对象也可以);
而对于一个非static的内部类,它首先是外层类的一个成员,必须存在外层类的对象才可以使它实例化,所以,假设当这个内部类中可以存在某些静态的属性
或方法,那么它自己还是绝对不能以它的类名来访问或者调用的。
因此:SUN的JDK干脆规定,非静态类中如果存在静态的属性或者方法…
[/Quote]
谢谢,不知道是不是jdk官方的说法,如果是,就没说的了,呵呵。
在不确定是不是官方说法的前提下,对以上解释还是有点不解。
1.我认为如果可以定义静态属性,可以用:外部对象.内部类.静态方法 的方式进行访问。
2.我认为静态的属性或者方法不全是用来访问或调用的,它还有进行类初始化的目的。
iammingbohello
2008-12-12
打赏
举报
回复
[Quote=引用 4 楼 ljking2006 的回复:]
静态类,方法都是应用程序启动就自动加载到内存的.
而非静态只有使用的时候才加载,你不可能进入到非静态的内部去加载静态方法吧.
[/Quote]
不一定要加载静态方法啊,那按你的意思 非静态内部类什么时候加载的呢?
不管是静态内部类还是非静态内部类,总要加载的吧。
那加载类的时候进行内部类中的静态变量的初始化有什么问题呢?
SylvanLiu
2008-12-12
打赏
举报
回复
首先,static的变量或方法属于这个类本身,它会一直存在直到你的程序结束,
所以,一般应该是以类名来直接调用的(当然自身的对象也可以);
而对于一个非static的内部类,它首先是外层类的一个成员,必须存在外层类的对象才可以使它实例化,所以,假设当这个内部类中可以存在某些静态的属性
或方法,那么它自己还是绝对不能以它的类名来访问或者调用的。
因此:SUN的JDK干脆规定,非静态类中如果存在静态的属性或者方法,就直接报错!
ljking2006
2008-12-12
打赏
举报
回复
静态类,方法都是应用程序启动就自动加载到内存的.
而非静态只有使用的时候才加载,你不可能进入到非静态的内部去加载静态方法吧.
ty_fzpb
2008-12-12
打赏
举报
回复
倘若能定义,那定义出来有用吗????!!!!
自己写个Demo测测就知道
location179
2008-12-12
打赏
举报
回复
友情up
qap22
2008-12-12
打赏
举报
回复
友情up
关于Java
中
类加载时对其
属性
和代码
块
初始化
顺序的研究与测试
关于类加载时对其内部
属性
,代码
块
初始化
(通常是分配栈内存)的顺序的测试结果如下几点: * 1,类的加载,这是由类加载器执行的,该步骤将查找字节码(通常是在classPath的类路径下)但这种并
非
是必须的,并从这些...
为什么匿名内部类和局部内部类只能访问final变量
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法
中
定义的变量,则这些参数和变量必须被修饰为 final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部...
静态
方法
抛出运行时异常导致反射生成实例失败
文章目录
静态
方法
抛出运行时异常导致反射生成实例失败场景还原生成实例失败的类抛出运行时异常的方法无法捕获异常之处重试接口类测试main方法测试输出结论 场景还原 1. 启动时,static
属性
获取时便打印了异常,不过...
C++
中
const 、static、 static const和const static的
初始化
以及修改问题
一、const、static、static const、const static变量的
初始化
...(1)只有这一种情况const变量可以不在声明的同时定义,那就是const变量作为类的数据成员出现时。例如: class Myclass { cons in
关于java内部类加载顺序的问题
我们知道,java当
中
,类的加载顺序是:类
静态
块
-类
静态
属性
-类内部
属性
-类构造方法。 但是当有内部类的时候会怎样呢?我们先看一下代码。 public class Singleton { public static class Inner{ static { ...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章