[JAVA学习笔记] 21天学习挑战赛第二周 面向对象编程(三)枚举与抽象类

        枚举

枚举的作用

枚举的格式

引用

 特征

抽象类

abstract关键字

格式

使用场景

学习日记


活动地址: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;
	}
	
}

 特征

  1. 枚举都是继承了枚举类型:java.lang.Enum;
  2. 枚举都是最终类,无法被继承
  3. 枚举的构造函数必须为私有,外部无法实例化枚举对象(保证安全性)
  4. 枚举的第一行都是枚举对象名称(以;代表第一行结束)
  5. 枚举相当于多例模式

**

抽象类

**

abstract关键字

当类被abstract修饰时,这个类便是抽象类;当一个方法被abstract修饰时,这个方法便是抽象方法。

格式

修饰符 abstract class 类名{

        修饰符 abstract 返回值类型 方法名称(参数列表);

}

使用场景

抽象类一般用作基类,让子类进行继承;

当子类一定要完成某些行为,但每个子类的实现上又有所不同时,父类便将该行为定义为抽象方法,留子类去具体实现。

Tips:

抽象方法只能有方法的声明,不能有具体的实现;

只有抽象类可以包含抽象方法,普通类不可以;

子类继承抽象类要重写抽象类的所有抽象方法;

不能用abstract修饰变量、代码块、构造器。

 

**

学习日记

**
1,学习知识点

提示:可以添加所学专栏知识点

2,学习遇到的问题

提示:可以添加相关知识点难点或者疑惑(便于专栏博主针对性解答)

3,学习的收获

提示:可以总结知识点相关收获

4,实操

提示:可以添加相关知识点的练习实操案例

提醒:在发布作品前请把不用的内容删掉(活动地址请保留)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸海鹿林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值