二、抽象、接口、枚举、包装类
1.抽象类中的抽象方法(abstract):就只有方法签名,没有方法体
2.抽象类的子类,必须重写抽象父类中所有的抽象方法
3.接口(interface/implements): has-a关系,接口中声明的属性默认是公开静态常量
4.引用数据类型:数组,类,枚举,接口,注解。
5.接口中没有构造方法(不需要初始化),抽象方法省去public abstract,默认方法为default修饰
6.如果实现类既要继承父类又要实现父接口,那么继承在前,实现在后。
7.枚举(enum)类型本质上也是一种类,只不过是这个类的对象是固定的几个,而不能随意让用户创建。
8.枚举构造方法用private修饰(可省)
9. 枚举类默认继承的是java.lang.Enum类,常与switch case配合使用
10.包装类对象和基本数据类型转化为String:(快捷方式)
-
String string = int + ” ”;
-
String string = Integer + “ ”;
11.java.lang.Integer:与自己对应类型之间可以完成自动装箱和拆箱
12.int-->String : String.valueof(int a); \ Integer.toString(int a);
String-->int : Integer.valueof(String s); <--自动拆箱 \ 常规: Integer.parseInt(String s);
13.常量池:在方法区中,按数据类型范围被提前缓存,超过范围需要重new对象
三、内部类、注释
1.静态内部类不能访问外部类的非静态属性;非静态内部类不能定义静态属性与方法(类加载)
2.局部内部类随着方法被调用,创建,存于栈中,再销毁
3.匿名内部类:匿名内部类只能作为抽象父类的子类或者是接口的实现类来使用
-
Fly fly = new Fly() { --左为多态,右为隐匿了类名的类--
-
接口或抽象类的抽象方法重写
-
};
-
fly.flying();
有些接口子类对象只用一次,所以可以使用匿名内部类去实现接口,同理匿名对象也一样
4.基本注释:@Override、@Deprecated(过时)、@SuppressWarning(抑制报错)
5.junit(jar包), 里有befor、test(用于普通方法)、after等注解——回归测试框架
6.元注解:@Target(使用范围)、@Retention(生命周期)、@Documented(文档)、@Inherited(继承)
7.自定义注解:
@Target(ELementType.TYPE)
@Retention(RetentionPoLicy.CLAss)
public @interface MyAnno {
String value()default "he"
}