活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
枚举
enum是Java在1.5版本后新增的特性,是一种特殊的数据结构。
枚举的作用
在可以使用枚举之前,Java中的静态常量只能在类中定义,需要使用static与final关键字修饰,不方便取用,同时也会是类头部的属性看起来特别的臃肿,影响代码的可读性;
当使用枚举时,便可以将所有的静态常量定义在枚举中,可以定义枚举的属性与索引,定义方法去实现对静态变量的操作;
安全性高。
枚举的格式
修饰符 enum 枚举名{
枚举对象1,枚举对象2,
枚举对象3,
枚举对象4;
//TODO...
}
引用
最基本的做法就是通过[枚举名.枚举对象]获取枚举对象的对象名,当需要对枚举对象进行处理,例如随机存取,遍历枚举返回索引等等功能时,可以在枚举中添加构造器。
public enum Key {
ID("ID", 0),
NAME("NAME", 1),
SCHOOL("SCHOOL", 2);//分号代表枚举列表结束只能存在一个
private String name;
private int index;
//保证枚举的数目是固定的,不允许外部实例化枚举对象
private Key(String name,int index) {
this.name = name;
this.index = index;
}
//通过索引获取name属性值
public static String getName(int index) {
for (Key k : Key.values()) {
if (k.getIndex() == index) {
return k.name;
}
}
return null;
}
//遍历枚举判断name是否在枚举中
public static boolean own(String name) {
for (Key k : Key.values()) {
if (k.getName().equals(name)) {
return true;
}
}
return false;
}
//获取name的值
protected String getName() {
return name;
}
//获取index的值
protected int getIndex() {
return index;
}
}
特征
- 枚举都是继承了枚举类型:java.lang.Enum;
- 枚举都是最终类,无法被继承
- 枚举的构造函数必须为私有,外部无法实例化枚举对象(保证安全性)
- 枚举的第一行都是枚举对象名称(以;代表第一行结束)
- 枚举相当于多例模式
**
抽象类
**
abstract关键字
当类被abstract修饰时,这个类便是抽象类;当一个方法被abstract修饰时,这个方法便是抽象方法。
格式
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名称(参数列表);
}
使用场景
抽象类一般用作基类,让子类进行继承;
当子类一定要完成某些行为,但每个子类的实现上又有所不同时,父类便将该行为定义为抽象方法,留子类去具体实现。
Tips:
抽象方法只能有方法的声明,不能有具体的实现;
只有抽象类可以包含抽象方法,普通类不可以;
子类继承抽象类要重写抽象类的所有抽象方法;
不能用abstract修饰变量、代码块、构造器。
**
学习日记
**
1,学习知识点
提示:可以添加所学专栏知识点
2,学习遇到的问题
提示:可以添加相关知识点难点或者疑惑(便于专栏博主针对性解答)
3,学习的收获
提示:可以总结知识点相关收获
4,实操
提示:可以添加相关知识点的练习实操案例
…
提醒:在发布作品前请把不用的内容删掉(活动地址请保留)