1.反射 注解
反射是
java在在jvm运行时运行期间动态获取类的信息,包括属性 方法。
注解是 继承了Annocation的接口,
解析注解的方式: 一种是编译器,扫描类中的注解,根据注解,编译器进行某些操作。一种是通过反射调用。
元注解: 注解的注解。
- @Target 注解的目标 @Retention 注解的生命周期 @Inherit 是否允许子类继承
内置注解 @Override @Deprecated(过时的方法)
public @interface anT{} 自定义注解。
注解的作用:
清晰的帮助我们知道代码是做什么的。
在编译期进行检测。
在框架中,利用注解 通过反射,减少配置文件的使用。
2.异常
异常分为error exception
error 是值jvm自身造成的,如溢出。
excpetion 是异常时可进行捕获的。包括
运行时异常,即平常我们所说的空指针,数组越界,class notfinfd,ArithmeticException分子为0.运行时异常都是无法检测的,在运行期间才能检测出。
ioe Exception :
检查性异常:需要强制进行 trycatch的。非检查性异常: 不需要捕获,runtime异常。
package test;
class Test {
public static void main(String[] args) {
System.out.println(new B().getValue());
}
static class A {
protected int value ;
public A (int v) {
setValue(v);
}
public void setValue(int value) {
this.value= value;
}
public int getValue() {
try {
value ++;
return value;
} finally {
this.setValue(value);
System.out.println(value);
}
}
}
static class B extends A {
public B () {
super(5);
setValue(getValue()- 3);
}
public void setValue(int value) {
super.setValue(2 * value);
}
}
}
执行过程是,
一. super(5) 执行父类构造方法,然后里面执行this.setvalue 。继续执行里面的supe.setValue(2*5) ; value=10
二 .setValue(getValue() -3) ,执行value++,11,保留此时的return value值,然后去执行finally,打印22。 setValue(11-3),value 16.
三 执行newB.getValue()return 16+1; 打印 34.然后执行输出 17.
3. 封装 多态 抽象类 接口
封装 :在类中将变量声明为private ,然后暴露出 public 的set get方法,可以将变量设为只能读取或者只能写入。用户不需要知道类中变量是如何赋值的,类对外暴只是露出接口,具体的实现进行封装。
多态:
有两方面的行为,一是从父类继承的方法,方法中的内容可以进行根据自身需求具体编写。
二是,可以进行重载,方法名相同,但参数类型个数不一样,从而表现出不一样的行为。、
接口:
接口默认是抽象类 是不可实例化的,其方法也是public 且抽象的。是对行为的抽象,是一组行为规范。
类实现接口,实现其具体的方法
好处: 将设计与实现分离,对外隐藏实现。面向接口编程oop。
接口和抽象类的 区别:
抽象类是有抽象方法,抽象方法只能用作被声明,抽象类不能被实例化 ,其他的更与普通类差不多。