【跟着老韩学Java】抽象类&枚举

【零基础 快速学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 + '\'' +
                '}';
    }
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值