枚举类可以实现接口吗(接口中可以定义枚举吗)

网友投稿 384 2023-01-06


本篇文章给大家谈谈枚举类可以实现接口吗,以及接口中可以定义枚举吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享枚举类可以实现接口吗的知识,其中也会对接口中可以定义枚举吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

枚举能继承类或接口吗

1 枚举的定义 :一个特殊的java类,对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个
接口的定义:定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能
2 上面的定义中说明了枚举是一个特俗的java类,既然是一个java类,那么就可以继承接口。
3 下面的用java代码来展示枚举继承接口的方式 :
//定义一个枚举:
public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
public interfacel SuitImp{}//接口
//枚举实现接口的代码
public enum Suit implements SuitImp()

枚举和类的异同

枚举是java 5新增了一个menu关键字(它与class、interface关键字的地位相同)枚举类可以实现接口吗,用于定义枚举枚举类可以实现接口吗,枚举是一种特殊的类,它一样有自己的Fileld、方法,可以实现一个或多个接口,也可以定义自己的构造器。一个java源文件中最多只能定义一个public访问权限的枚举类,且该java源文件也必须和枚举类的类名相同。但枚举毕竟不是普通的java类,它与普通类有如下简单的区别枚举类可以实现接口吗
1、枚举类可以实现一个活多个接口,使用menu定义的枚举直接继承了java.long.Enum类,而不是继承Object类。其中java.long.Enum类实现了java.long.Serializable和java.long.Comparable两个接口。
2、使用enum定义、非抽象的枚举默认修饰符为final,因此枚举不能派生子类。
3、枚举的构造器只能使用private访问控制符,如果省略了枚举的访问修饰符其默认为private修饰;如果加强制定访问修饰符则只能使用private。
4、枚举的所有实例必须在枚举的第一行显示列出,否则这个枚举永远都不能生产实例,列出这些实例时系统会自动添加public static final修饰,无需程序员显式添加
5、所有的枚举类都提供了一个values方法,该方法可以很方便的遍历所有的枚举值

C#枚举器的实现接口

实现 IEnumerator 接口
注意到ListBoxEnumerator不仅需要实现IEnumerator接口枚举类可以实现接口吗,对于ListBox类它也需要一些特别了解;特别是,它必须可以获得ListBox枚举类可以实现接口吗的字符串数组并且遍历其所包含的字符串。IEnumerable 类和与其相关的 IEnumerator类之间的关系有一点微妙。实现IEnumerator接口的最好办法是在IEnumerable类里创建一个嵌套的IEnumerator类。
public class ListBox : IEnumerable
{
// 嵌套的私有ListBoxEnumerator类实现
private class ListBoxEnumerator : IEnumerator
{
// 代码实现...
}
// ListBox类的代码...
}
注意ListBoxEnumerator需要对它所嵌入的ListBox类的一个引用。枚举类可以实现接口吗你可以通过ListBoxEnumerator的构造函数来传递。
为了实现IEnumerator接口,ListBoxEnumerator需要两个方法:MoveNext和Reset,还有一个属性:Current。这些方法和属性的任务是创建一个状态机制,确保你可以在任何时候得知ListBox中的哪个元素是当前元素,并获得那个元素。
在这个例子中,这种状态机制是通过维护一个标明当前string的索引值来完成的,并且,你可以通过对外部类的string集合进行索引来返回这个当前的string。为了达到这个目标,你需要一个成员变量保存对于外部ListBox对象的引用,以及一个整型用于保存当前索引。
private ListBox lbt;
private int index;
每次Reset方法被调用的时候,index被置为 -1。
public void Reset()
{
index = -1;
}
每次MoveNext被调用的时候,外部类的数组检查时候已经到了末尾,如果是这样,方法返回false。如果集合中还有对象,index将增加,并且方法返回true。
public bool MoveNext()
{
index++;
if (index = lbt.strings.Length)
{
return false;
}else
{
return true;
}
}
最后,如果MoveNext方法返回True,foreach循环将调用Current属性。ListBoxEnumerator的Current属性的实现是索引外部类(ListBox)中的集合,并且返回找到的对象(这个例子中,是一个字符串)。注意,返回一个Object是因为IEnumerator接口中Current属性的签名如此。
public object Current
{
get {
return(lbt[index]);
}
}
在1.1中,所有想要通过foreach循环来迭代的类都需要实现IEnumerable接口,于是,必须创建一个实现了IEnumerator的类。最糟的是,enumerator返回的值并不是类型安全的。记得Current属性返回一个Object对象;它仅仅简单的假设你所返回的值与foreach循环所期望的相符合。

C语,枚举常量的值是怎么定义的呀?

枚举(从JDK1.5开始有)
用于代表”实例已经固定“的类,而且定义时就必须在【第一行】创建初始化并列出来。
语法格式:
修饰符 enum 枚举名{
//立即在第一行列出该枚举的所有实例。
}
—— 修饰符 可以是 public | 省略 | abstract | final。 abstract与final必须出现其中一个。
—— 枚举的构造器只能用private修饰。
—— 枚举类的实例必须在第一行显式的列出。
所有的枚举都有一个values()方法,返回枚举实例
switch(byte|short|char|int|String|枚举)
●有了枚举之后,它的实例已经创建出来了,只需要用它们就行了。
●枚举可以有Field,方法,构造器(只能是private修饰),初始化块,内部类。
列出枚举值,并不是简单的定义几个枚举值的变量名。
而是调用枚举类的构造器来创建相应的实例。
定义枚举的方法时要非常小心,
●包含抽象方法的枚举类
●枚举可以实现接口。
A。实现接口,并直接实现所有的抽象方法。
此时枚举类不再是抽象枚举了。
B。实现接口,但并不直接实现抽象方法。
此时枚举类就只能是抽象枚举类。

枚举型的类型相容和赋值相容

1.类型相容性
类型相容是对参加同一运算的两个对象的类型要求。设有两个变量,如果满足下列条件之一,就说这两个变量的类型相容。
(1)两个变量的类型相同
a.两个变量被同一类型说明。
例如:var a,b:1..30;
b.两个变量的类型是同一类型标识符。
例如:var a:1..30; b:1..30;
c.两个变量的类型是不同的类型标识符,但在类型定义中已经说明两个标识符相同。
例如:type date=1..100; range=date;
var m:data;n:range;
(2)一个变量的类型是另一个变量的子界。
(3)两个变量的类型都是同一基类型的子界。
(4)两个变量的类型是基类型相容的集合类型。
(5)两个变量的类型是成分相同的串类型。
2.赋值相容性
赋值相容是对赋值操作的两个对象的类型要求。设赋值语句“:=”左边的变量类型为T,右边表达式的类型为E,若类型T和类型E满足下列条件之一,则称他们是赋值相容的。
(1)T和E是相同的类型,而且类型不是文件类型,也不是具有文件类成分的构造类型。
(2)T是实型,而E是整型或整型的子界。
(3)T和E是类型相容的顺序类型,并且E的值不超出T所定义的值的范围
(4)T和E是类型相容的集合类型,并且E的值不超出T所定义的值的范围
(5)T和E是类型相容的串类型。
当T和E是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求E的值不超出T所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此你必须要避免不发生这种错误。
在java中枚举类型一般定义格式如下:
enum 枚举类名 {
清单对象1, [清单对象2....];
}
java中的枚举类可以有构造函数、可以实现接口,但不能继承任何类,其在编译以后默认继承jdk内部的枚举类。

关于java枚举的疑惑

首先Enumeration是一个接口,不是类,你想使用,就做个类实现它。
java.util.Enumeration
不过它其实不是传统意义上的枚举类型,他是用来访问某些集合类的接口,类似Iterator
散列与向量用Enumration,链表与树集用Iteration
TestEnum和Enum没有关系,枚举是不能继承一个类或其他枚举的。只能实现接口。你能使用values是因为你声明TestEnum是enum,不是因为TestEnum继承自谁。你是不是认为你没写values,还能使values,是因为TestEnum继承自某一个类似于object的公共基类?不是这样。
values方法是你指定Enum这种类型后,编译器为你实现的。
另外,使用java,最好不要使用枚举。那是面向过程编程遗留的数据类型。其实并不符合oop思想。完全可以用类来代替它。 关于枚举类可以实现接口吗和接口中可以定义枚举吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 枚举类可以实现接口吗的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口中可以定义枚举吗、枚举类可以实现接口吗的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈Java内存泄露
下一篇:泛谈Java中的不可变数据结构
相关文章

 发表评论

暂时没有评论,来抢沙发吧~