注:本博客是博主用来对所学知识的巩固。
一、关于对象与类:
1、重载:如果多个方法有相同的名字,不同的参数,便产生了重载。
2、无参数的构造函数:如果在编写一个类时,没有编写构造器,那么系统会提供 一个无参数构造器。这个构造器将所有的实例域设置为默认值。如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则系统不会提供无参数构造器。
3、初始化块:在一个类的声明中可以包含多个代码块,只要构造类的对象,这些块就会被执行。这种机制不是很常见,通常直接将初始化代码放到构造器中。
4、静态初始化块:在类第一次加载的时候,将会进行静态域的初始化。所有的静态初始化语句以及静态初始化块都将依照类定义的顺序执行。
5、包作用域:
public:可以被任意的类使用
protected:同一包下可以访问,以及子类可以访问
友好的:这个部分可以被同一个包中的所有方法访问
private:只能被定义他们的类使用
6、类路径(class path)的设置:java -classpat(或-cp)选项指定类路径。在bash下,使用export CLASSPATH 目录位置
二、继承
如果子类的构造器没有显示地调用超类的构造器 ,则将自动地调用超类默认的无参构造器;如果超类没有无参构造器,并且在子类的构造器中有没有显示地调用超类的其他构造器,则java编译器会报告错误。
1、this与super
this的两个用途,一个是引用隐式参数(类中声明的实例变量),二是调用该类的其他构造器。
super的两个用途,一是调用超类的方法,二是调用超类的构造器。
调用构造器的语句只能作为另一个构造器的第一条语句出现。
2、多态:一个对象变量可以只是多种实际类型的现像被称为多态。它表明,子类的每个对象也是超类的对象。
3、在覆盖一个方法时,子类方法不能低于超类方法的可见性。
4、阻止继承 :final修饰类,该类不能被继承;final修饰方法,该方法不能被覆盖;
5、抽象方法:抽象类充当站位的橘角色,他们的具体实现在子类中。
扩展抽象类有两种选择:
a)一种是在子类中定义部分抽象方法,或者抽象方法也不定义,这样就必须将子类也标记成抽象类
b)另一种是定义全部抽象方法,这样一来,子类就不是抽象的了。
抽象类不能被实例化。
三、反射
定义:能够分析类能力的程序称为反射。
反射机制:
a、在运行中分析类的能力。
b、在运行中查看对象
c、实现通用的数组操作代码
d、利用Method对象
1、Class类:在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。JVM利用运行时类型信息选择相应的方法执行。
获取Class类的三种方式:
a、通过Obeject对象的getClass()方法返回一个Class类型的实例。
b、通过类或者接口的全限命名去获取Class,比如,Class.forName("java.util.Date")
c、如果T是Java类型,T.class将代表匹配的类对象
2、利用反射分析类的能力:
在java.lang.reflect中有三个类Field、Method、Constructor分别用于描述类的域、方法和构造器。