2020-10-07课堂笔记

    科技2024-07-04  69

    2020-10-07课堂笔记

    主知识点1.枚举enum2.映射3.枚举案例(以四季为例)

    主知识点

    1.枚举enum

    特点:

    普通类class可以使用extends去继承其他类,而enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)枚举通常具有枚举实例,实例之间以逗号分隔,以分号结尾枚举也可以有自己的属性和方法,以及构造函数等枚举也可以像普通类一样去实现接口在哪些情形下使用枚举: 比如列举四季,12月,一周七天,一个系统的管理员身份,教师身份,学生身份等能被列出的字符串

    2.映射

    classconstructormodifierfieldmethod Class class = Class.forName("com.ddb.javacore.reflect.Person"); //包名+类名 Student student = class.newInstance(); //调用了Employee的无参数 //构造器 Constructor c=clazz.getConstructor([可选参数]); Constructor [] c=clazz.getConstructors(); //成员变量 Field field=clazz.getDeclaredField([可选参数]); Field []field=clazz.getDeclaredFields(); // 权限不够时,set方法或者暴力打破权限 field.setAccessible(true); //使用反射机制可以打破封装性,但导致了java对象的属性不安全。 field.set(student,"值");

    3.枚举案例(以四季为例)

    1.创建枚举对象

    public enum Season { Spring("和风",0){ @Override public void animalshout(){ System.out.println("青蛙叫"); } },Summer("炎热",1),Autumn("凉爽",2),Winter("寒冬",3); String name; int num; private Season(String name,int num) { // TODO Auto-generated constructor stub this.name=name; this.num=num; } public void animalshout() { // TODO Auto-generated method stub System.out.println("没有动物叫!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } }

    2.主函数内测试枚举类

    System.out.println("季节:"+Season.Spring+"描述:"+Season.Spring.getName()+"序号:"+Season.Spring.getNum()); Season.Spring.animalshout();//调用重写后的方法 Season.Summer.animalshout();//没有重写故调用之前的方法

    运行结果: 季节:Spring描述:和风序号:0 青蛙叫 没有动物叫!

    3.遍历枚举对象

    for (Season e : Season.values()) { System.out.println(e.toString()); }

    遍历结果: Spring Summer Autumn Winter

    Processed: 0.009, SQL: 8