小说类型怎么定义!!!!谢谢

如题,小说类型怎么定义!!!!谢谢
最新跟帖
紫梦

紫梦

enum作为sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 3.enum默认实现了java.lang.comparable接口。 4.enum覆载了了tostring方法,因此我们如果调用color.blue.tostring()默认返回字符串”blue”. 5.enum提供了一个valueof方法,这个方法和tostring方法是相对应的。调用valueof(“blue”)将返回color.blue.因此我们在自己重写tostring方法的时候就要注意到这一点,一把来说应该相对应地重写valueof方法。 6.enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 7.enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里color.red.ordinal()返回0。 了解了这些基本特性,我们来看看如何使用它们。 1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用foreach循环来遍历了枚举值了。 for (color c: color.values()) system.out.println(“find value:” + c); 2.在enum中定义方法和变量,比如我们可以为color增加一个方法随机返回一个颜色。 public enum color { red, green, blue; /* *定义一个变量表示枚举值的数目。 *(我有点奇怪为什么sun没有给enum直接提供一个size方法). */ private static int number = color.values().length ; /** * 随机返回一个枚举值 @return a random enum value. */ public static color getrandomcolor(){ long random = system.currenttimemillis() % number; switch ((int) random){ case 0: return color.red; case 1: return color.green; case 2: return color.blue; default : return color.red; } } } 可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。 3.覆载(override)tostring, valueof方法 前面我们已经知道enum提供了tostring,valueof等方法,很多时候我们都需要覆载默认的tostring方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的tostring方法没有什么区别。 …. public string tostring(){ switch (this){ case red: return "color.red"; case green: return "color.green"; case blue: return "color.blue"; default: return "unknow color"; } } …. 这时我们可以看到,此时再用前面的遍历代码打印出来的是 color.red color.green color.blue 而不是 red green blue. 可以看到tostring确实是被覆载了。一般来说在覆载tostring的时候我们同时也应该覆载valueof方法,以保持它们相互的一致性。 4.使用构造函数 虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。还是用color这个例子。 public enum color { red("this is red"), green("this is green"), blue("this is blue"); private string desc; color(string desc){ this.desc = desc; } public string getdesc(){ return this.desc; } } 这里我们为每一个颜色提供了一个说明信息, 然后定义了一个构造函数接受这个说明信息。 要注意这里构造函数不能为public或者protected, 从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 5.实现特定的接口 我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。 6.定义枚举值自己的方法。 前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。这样,我们前面覆载 tostring的例子可以被改写成这样。 public enum color { red { public string tostring(){ return "color.red"; } }, green { public string tostring(){ return "color.green"; } }, blue{ public string tostring(){ return "color.blue"; } }; } 从逻辑上来说这样比原先提供一个“全局“的tostring方法要清晰一些。 总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,个 人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。
若若

若若

小说就是以塑造人物形象为中心,通过故事情节的叙述和环境的描写反映社会生活。

短篇、中篇、长篇小说

【现代小说分类】

武侠小说,言情小说,科幻小说,玄幻小说,历史小说,网游小说,穿越小说,修真小说
麥麥麥麥

麥麥麥麥

需要修改的有两个地方

第一构造函数这里:

Fu(int shibu,int xubu);

Fu(int shibu);

Fu();

你声明之后,后面没有定义~没有函数体~

下面是我修改的~你可以看看:

Fu(){shibu=0;xubu=0;};

Fu(int shi){shibu=shi;xubu=0;};

Fu(int shi,int xu){shibu=shi;xubu=xu;};

还有就是主函数:

d1=a+b; d1.output(const Fu&a);

d2=a-b; d2.output(const Fu&a);

d3=a*c; d3.output(const Fu&a);

d4=a/c; d4.output(const Fu&a);

d5=++a; d5.output(const Fu&a);

d6=--a; d6.output(const Fu&a);

调用output的时候只需要传入参数就可以了~实例化的时候类型可以删掉了~

可以修改成下面的

d1=a+b; d1.output(a);

d2=a-b; d2.output(a);

d3=a*c; d3.output(a);

d4=a/c; d4.output(a);

d5=++a; d5.output(a);

d6=--a; d6.output(a);

当然主函数最后还缺一个}

下面是我修改的

#include

#include

#include

class Fu

{

public:

friend Fu operator +(const Fu& a,const Fu&b);

friend Fu operator -(const Fu& a,const Fu&b);

friend Fu operator *(const Fu& a,const int&c);

friend Fu operator /(const Fu& a,const int&c);

friend Fu operator ++(Fu& a);

friend Fu operator --(Fu& a);

Fu(){shibu=0;xubu=0;};

Fu(int shi){shibu=shi;xubu=0;};

Fu(int shi,int xu){shibu=shi;xubu=xu;};

void output(const Fu& a);

private:

int shibu,xubu;

};

int main()

{

Fu a(5,1),b(1,2),d1,d2,d3,d4,d5,d6;

int c=2;

d1=a+b; d1.output(a);

d2=a-b; d2.output(a);

d3=a*c; d3.output(a);

d4=a/c; d4.output(a);

d5=++a; d5.output(a);

d6=--a; d6.output(a);

return 0;

}

Fu operator +(const Fu&a,const Fu&b)

{ Fu temp;

temp.shibu=a.shibu+b.shibu;

temp.xubu=a.xubu+b.xubu;

return temp;

}

Fu operator -(const Fu&a,const Fu&b)

{ Fu temp;

temp.shibu=a.shibu-b.shibu;

temp.xubu=a.xubu-b.xubu;

return temp;

}

Fu operator *(const Fu&a,const int&c)

{ Fu temp;

temp.shibu=a.shibu*c;

return temp;

}

Fu operator /(const Fu&a,const int&c)

{ Fu temp;

temp.shibu=a.shibu/c;

return temp;

}

Fu operator ++(Fu& a)

{ a.shibu++;

return a;

}

Fu operator --(Fu& a)

{ a.shibu--;

return a;

}

void Fu::output(const Fu&a)

{

cout

Clair

Clair

小说就是以塑造人物形象为中心,通过故事情节的叙述和环境的描写反映社会生活。

短篇、中篇、长篇小说

【现代小说分类】

武侠小说,言情小说,科幻小说,玄幻小说,历史小说,网游小说,穿越小说,修真小说

f..煈羿

f..煈羿

  • 0
    经验
  • 0
    粉丝
  • 0
    关注
微信公众号 微信客服号 APP下载 返回顶部
顾文姬微信公众号

微信扫描关注

顾文姬微信客服号

微信扫描加好友

顾文姬app下载

扫描下载