2016.2.24(类)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.2.24(类)相关的知识,希望对你有一定的参考价值。
访问修饰符private,默认,protected,public 在应用时的区别?
private:只有本类可以访问
默认:本类,同包可以访问
protected:本类,同包,子类,可以访问
public:可以任意对象访问。
封装有什么好处?
类的成员变量可以成为只读或者只写的
类可对存储在其成员变量中的内容有一个整体的规划
类的用户不需要知道类是如何存储数据的
静态
用static修饰的属性,所有对象共用,实际与对象无关
注意:1.与对象无关,与类有关 2.全类共享一个 3.预加载
static方法不能操作非static的属性和方法
原因:1.从设计上来说,static是类级别,与对象无关
2.从实现上来说,static修饰的是被首先加载的,因此非static的还没有被加载到内存,所以无法访问
什么时候使用static修饰?
工具类的工具方法可以使用 static修饰 (例:Math.random())
注意:static不能用来修饰构造,因为凡是static的都与对象无关,而构造是专门用来产生对象的
静态方法不可以访问非静态方法,非静态方法可以访问静态方法
实例初始化块:在产生对象的时候自动执行,在父类的构造方法之后,在本类的构造方法之前
使用量很少,因为完全可以把代码就写到本类构造方法前几行
静态初始化块:在加载的时候自动执行,只执行一次
使用量很高通常会把一些程序运行前的准备工作放在这里,让其加载期就完成
成员内部类的特点:1.可以有访问修饰符
2.class文件名格式:外部类类名+$+内部类类名.class
3.在本类的非静态任意方法中都可以new出来,但是其他类必须用外部对象.new出来内部对象
局部内部类的特点:1.不能有访问修饰符
2.class文件名:外部类类名+$+序号+内部类类名.class
3.只能本方法产生对象,然后使用
静态内部类(成员内部类特例):在本来的人任意方法中都已new出来,在第三方中要new出来,无需产生外部对象,只需要外部类类名.的方法就可以了
匿名内部类(局部内部类特例):由于没有类名,所以是在产生对象的时候用语句告诉JVM它的结构,只能用1次。需注意分号,括号的位置。
以上是关于2016.2.24(类)的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch代码片段,及工具类SearchEsUtil.java
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段