IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java面向对象应用--------枚举和注解 -> 正文阅读

[Java知识库]Java面向对象应用--------枚举和注解

枚举

枚举是一组常量的集合,可以将其理解为一种特殊的类,里面只包含一组有限的特定的对象
使用enum关键字后,就不能再继承其它类了,因为enum会隐式继承Enum,而Java是单继承机制。
枚举类和普通类一样,可以实现接口,如下形式。enum类名implements接口1,接口2

枚举的定义方法

自定义枚举

1、将构造器私有化,以防随便new 新对象
2、将set()函数删除以防修改
3、自己创建一组对象
4、将对象暴露给外部调用,使用public static final 修饰,记得常量名要大写(规范)

public class Enumeration {
    public static void main(String[] args) {
        //使用(原方法)
//        Season spring = new Season("春天", "温暖");
//        Season winter = new Season("冬天", "寒冷");
//        Season summer = new Season("夏天", "炎热");
//        Season autumn = new Season("秋天", "凉爽");
//        autumn.setName("XXX");可以任意地更改对象信息
//        autumn.setDesc("非常的热..");
        // 枚举方法实现
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
        //因为对于季节而已,他的对象(具体值),是固定的四个,不会有更多
        //这个设计类的思路,不能体现季节是固定的四个对象
        //因此,这样的设计不好===> 枚举类[枚: 一个一个 举: 例举 , 即把具体的对象一个一个例举出来的类
        // 就称为枚举类]
        //Season other = new Season("红天", "~~~");//对象个数超过4个
    }
}

class Season {//类
    private String name;
    private String desc;//描述

    //自己定义一组对象
    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("冬", "寒冷");

    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
//    public void setDesc(String desc) {
//        this.desc = desc;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
}

系统自带的enum关键字

当我们使用enum 关键字开发一个枚举类时,默认会继承Enum类
1、用enum代替class(构造器必须私有)
2、将 public final static Season SPRING = new Season(“春”, “温暖”)简化为SPRING(“春”,“温暖”)
3、假如有多个对象常量用逗号隔开,如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略
4、定义常量对象要枚举类的行首

public class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season02.SPRING);
        System.out.println(Season02.AUTUMN);

    }
}

enum Season02 {//类
    SPRING("春","温暖"),AUTUMN("秋","冷");
    private String name;
    private String desc;//描述

    //自己定义一组对象(自定义方法)
//    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("冬", "寒冷");
    //SPRING("春","温暖"),AUTUMN("秋","冷");定义在这就报错,要写在前面

    private Season02(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }

}

练习:
在这里插入图片描述

枚举的常用方法

在这里插入图片描述

课堂练习

在这里插入图片描述

public class EnumExercise02 {
    public static void main(String[] args) {
        System.out.println("所有星期信息如下");
        week[] values = week.values();
        for(week week:values){
            System.out.println(week.getName());//返回星期一
            System.out.println(week.name());//返回MONDAY
        }
    }
}
enum week{
    MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三");
    private String name;
    private week(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }
}

注解Annotation

三个基本的Annotation:

编译器会去检查你是否你真的重写了一个方法

@Override:限定某个方法,是重写父类方法,该注解只能用于方法

Override使用说明
1.@Override表示指定重写父类的方法(从编译层面验证),如果父类没有fly方法,则会报错
2.如果不写@Override注解,而父类仍有public void fly(),仍然构成重写
3.@Override只能修饰方法,不能修饰其它类,包,属性等等
4.查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法
5.@Target是修饰注解的注解,称为元注解,记住这个概念.

@Deprecated: 用于表示某个程序元素(类,方法等)已过时

Deprecated的说明
1.用于表示某个程序元素(类,方法等)已过时(能使用但不推荐)
2.可以修饰方法,类,字段,包,参数等等
3.@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE,METHOD,PACKAGE, PARAMETER, TYPE})
4.@Deprecated的作用可以做到新旧版本的兼容和过渡

@SuppressWarnings: 抑制编译器警告

SuppressWarnings注解的案例>说明各种值

  1. unchecked是忽略没有检查的警告
  2. rawtypes是忽略没有指定泛型的警告(传参时没有指定泛型的警告错误)
  3. unused是忽略没有使用某个变量的警告错误
  4. @SuppressWarnings可以修饰的程序元素为,查看@Target
    5)生成@SupperssWarnings时,不用背,直接点击左侧的黄色提示,就可以选择

JDK元注解(了解)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:57:32  更:2021-10-03 16:58:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:17:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码