现在是2020年9月8日21:23:23,继续梳理Java基础的主干知识。
抽象类(abstract)
- 当定义某个类时,有些方法需要根据具体情况具体实现,所以需要定义方法的首部,而不需要实现方法体,这是需要在方法的修饰符中加上abstract关键字来声明该方法是抽象方法,对应的类就变成了一个抽象类,类的修饰符部分也加上一个abstract进行标识。
- 抽象类的构成:类的所有可能的构成元素 + 抽象方法
- 抽象类中的抽象方法必须在子类中具体实现
- 抽象类不能直接实例化,需要子类创建对象向上转型
备注:关于继承的内容后面再说。
public abstract class AbstractClazz{
// 类所有可能的构成元素:构造方法、类级别元素、对象级别元素
// 抽象方法:修饰符部分加上abstract关键字,方法体省略,用分号代替。
public abstract void abstractMethod();
}
接口(interface)
- 接口是由常量和抽象方法组成的特殊抽象类,是对抽象类的进一步抽象。
- 接口中定义的抽象方法需要通过实现类来具体实现。
- 优秀的程序员都是面向接口编程——将方法抽象于接口中,由实现类具体实现,这样可以实现解耦合,有很好的可拔插性和扩展性。
- 接口可以继承其他的多个接口。
- 接口也必须具体实现,不能直接实例化。
public interface MainIntf{
// 常量
double PI = 3.14;
// 抽象方法
void abstractMethod();
}
枚举(enum)
- 枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。
// 枚举
public enum Gender {
MALE, FEMALE
}
// 测试类
public class GenderTest {
public static void main(String[] args) {
System.out.println(Gender.FEMALE);
}
}
注解(Annotation)
- 注解,又称标注,是 JDK5.0 引入的一种注释机制。
- 常见的注解有:@Override(重写)、@Deprecated(已过时)
- 注解可以开发者自定义,可以在类、方法、变量、形参中使用。
(1)自定义注解
/**
* 注解中属性的类型可以是:
* byte short int long float double boolean char
* String Class 枚举类型及其数组形式
*/
public @interface MyAnnotation {
// 属性名为value时,如果使用注解时只有value一个属性需要赋值,可以省略“value=”
String value();
// 使用default关键字加上默认值,可以在使用注解时不用赋值
// 如果没有加上默认值,必须在使用注解时给出属性对应的值
String name() default "";
int age() default 18;
Class[] clazz() default {};
}
(2)使用注解
public class AnnotationTest {
@MyAnnotation("12")
public static void method(){}
}
- Java 标注可以通过反射获取标注内容。
- 注解的注解称为元注解,常见的元注解有:@Target、@Retention
(1)@Target:标明被注解的注解可以用在哪些位置上,如类、方法、变量等。
(2)@Retention:标明被注解的注解最终保存在哪个地方
//@Retention(RetentionPolicy.SOURCE)// 该注解只被保存在java源文件中
//@Retention(RetentionPolicy.CLASS)// 该注解被保存在class文件中
//@Retention(RetentionPolicy.RUNTIME)// 该注解被保存在class文件中,
// 并且可以被反射机制所读取
public @interface Anno{}
- 备注:
(1)枚举类型和注解类型使用得不多,但是可以根据开发场景的不同适当的使用。
(2)注解类型在JavaEE的高级框架中随处可见,了解其基本的实现原理,有利于后期对代码的理解。
(3)反射这一内容后续再展开。
这次的分享先到这里,如有雷同纯属巧合,谢谢。