只能在静态类型或顶级类型中才能声明静态方

本文探讨了Java中非静态内部类不允许拥有静态成员的原因。根据Java语言规范,非静态内部类依赖于其外部类实例的存在,因此不能拥有独立于特定实例的静态成员。

你把
class Base{
String var="Basevar";
static StrinstaticVar="StaticBaseVar"; //字段 staticVar 不能声明为“静态”;只能在静态或顶级类型中才能声明静态字段

void baseMethod(){
System.out.println("Base method");
}

static void staticMethod(){ //方法 staticMethod 不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态方法
System.out.println("static base method");
}
}
拿到public class Example外面去。
现在是在内部类中了。

---------------------------------------------------------------

答:这是JAVA语言的规定.通常认为:非static型的内部类如:class Base{...},是在当外部类class Example的对象已存在时才能使用.而一个static型的成员(数据成员与方法成员)是与 对象是否已存在 是无关的.是可以直接使用的.因而 规定不能定义static.
一句话:这只是一项规定.上边只是这种规定的可能的一种解释.

-----------------------------------------------------------------

非static的内部类不允许有static成员

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值