【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
抽象类
用abstract修饰抽象类
访问修饰符 abstract 类名{
}
用abstract修饰抽象方法
访问修饰符 abstract 类名{
访问修饰符 abstract 返回类型 方法名(参数列表);
}
抽象类的价值更多是在于设计,让子类继承并实现抽象类
抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多
抽象类不能被实例化
抽象类不一定要包含abstract方法,也就是说,抽象类可以没有abstract方法
一旦类包含了abstract方法,则在这个类必须声明为abstract
abstract只能修饰类和方法,不能修饰属性和其他的
抽象类可以有任意成员,抽象类本质上还是类
抽象方法不能有主体,即不能实现
如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类
枚举和注解
枚举是一组常量的集合
可以这样理解,枚举属于一种特殊的类,里面只包含一组有限的特定的对象
当我们使用enum关键字开发一个枚举类时,会隐式继承Enum类
public static final Season SPRING = new Season("春天","温暖");可以简化成SPRING("春天","温暖");
如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略
当有多个枚举对象时,使用逗号间隔,最后用分号
枚举对象必须放在枚举类的行首
Enum类有很多成员方法,如values(), toString(), ordinal(), compareTo()
使用enum关键字后就不能再继承其他类了,因为enum会饮食继承Enum,而Java是单继承机制
枚举类和普通类一样,可以实现接口
package chapter11;
/**
* @author YuanJie
* @version 1.0
*/
public class enum_ {
public static void main(String[] args) {
Season season = Season.SPRING;
//System.out.println(Season.SPRING);
}
}
//自定义实现枚举类
class Season{
private String name;
private String desc;
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
static {
System.out.println("Season类被加载...");
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
//此处的final加上没有什么意义,因为实例化对象本身一定会加载类,因为构造器本身不能是属于类的,即不能是static的
public final static Season SPRING = new Season("春天","温暖");
public final static Season SUMMER = new Season("夏天","炎热");
public final static Season AUTUMN = new Season("秋天","凉爽");
public final static Season WINTER = new Season("冬天","寒冷");
}
//使用enum关键字创建枚举类
enum Season{
//枚举类要求置顶写所有常量,常量名(参数),之间逗号隔开
SPRING("春天","温暖"),
SUMMER("夏天","炎热"),
AUTUMN("秋天","凉爽"),
WINTER("冬天","寒冷");
private String name;
private String desc;
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
static {
System.out.println("Season枚举类被加载...");
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}