学习过程中总遇到一些问题,内部类(inner Class)和嵌套类(Static Nested Class)到底是什么区别呢?难道只是一个static关键字的区别?自己的见解给写下
内部类就是内部的类:
class OuterClass { --外围类
...
class NestedClass { --内部类
...
}
}
嵌套类其实分为静态嵌套类的和非静态嵌套类,
a).静态嵌套类(Static Nested Class)
b).非静态嵌套类也就是所说的内部类(inner CLass)
上图说话
当实例化静态嵌套类的时候,出现Illegal enclosing instance specification for type OutCLass.NestedClass
其实最大的区别就是:
内部类的实例化对象需要绑定一个外围类的实例化对象,而静态嵌套类的实例化对象不能也无法绑定外围类的实例化对象。
------------扯到这些就不得不扯到关键字static,final的关键字啊-------
被static修饰:
1.可以修饰方法
修饰的方法叫做静态方法,被修饰过的方法可以调用非静态方法,非静态方法可以调用静态方法,可以通过类名.方法名字(直接调用)
a).静态方法中不能有this.super关键字,不能访问所属类的实例变量和实例方法
2.可以修饰常量: 变量分为静态变量和实例变量
a).语法上的区别:
前边加static的是静态变量,不加static的是实例变量
b).作用的区别
static:JVM加载类的时候,会给static分配一个地址,可以通过类名直接访问
非static:每创建一个实例,就给他分配一次内存
c).静态的好处
实现资源共享
访问数据比较方便
3.关于的是静态代码块
a).静态代码块总是优先执行(),JVM加载类的时候会按照static静态代码块,按照顺序执行
会出现打印的结果是什么呢?
被final修饰:
-
final可以修饰类,这样的类不能被继承。
-
final可以修饰方法,可以继承,但是这样的方法不能被重写。
-
final可以修饰变量,这样的变量的值不能被修改,是常量。
文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除或授权事宜,如果有误,请联系作者更改,谢谢,本人微信:void666666