跳至主要內容

LincZero大约 1 分钟

继承 - Python class模拟枚举

class OpCode2:
    """ OP_CODE 类似枚举 """
    INPUT = 1
    OUTPUT = 2
    ADD = 3
    SUB = 4
    MUL = 5


class OpCode(OpCode2):
    # 可以继承
    DIV = 6

继承 - C结构体

#include <stdio.h>

//父结构体
struct father
{
    int f1;
    int f2;
};

//子结构体
struct son
{
    //子结构体里定义一个父结构体变量,必须放在子结构体里的第一位
    struct father fn;
    //子结构体的扩展变量
    int s1;
    int s2;
};

继承 - Java枚举(怎么乱七八糟的)

Java enum是一种编译器open in new window魔术。 在字节码中,任何enum都表示为扩展抽象类open in new windowjava.lang.Enum并具有几个静态成员open in new window的类。

因此,枚举不能扩展任何其他类或枚举:没有多重继承。

类也不能扩展枚举open in new window。 此限制由编译器强制执行

 enum Color {red, green, blue} 

此类尝试扩展它:

 SubColor class extends Color {} 
// 结果报错
 $ javac SubColor.java  SubColor.java: 1 : error: cannot inherit from final Color  SubColor class extends Color {} 
                        ^  SubColor.java: 1 : error: enum types are not extensible  SubColor class extends Color {}  ^  2 errors 

Enum既不能扩展也不能扩展。 那么,如何扩展其功能呢? 关键字是“功能”。 Enum可以实现方法。

例如,枚举Color可以声明抽象方法draw() ,每个成员都可以重写它:

enum Color {
    red {@Override public void draw() { } },
    green {@Override public void draw() { } },
    blue {@Override public void draw() { } },
    ;
    public abstract void draw();
}