Java2实用教程(第二版)程序代码——第四章 类、对象、和接口
1
//例子1
2
class XiyoujiRenwu
3
{ float height,weight;
4
String head, ear,hand,foot, mouth;
5
void speak(String s)
6
{ System.out.println(s);
7
}
8
}
9
class A
10
{ public static void main(String args[])
11
{ XiyoujiRenwu zhubajie; //声明对象。
12
zhubajie=new XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法。
13
}
14
}
15![]()
16
//例子2
17
class Point
18
{ int x,y;
19
Point(int a,int b)
20
{ x=a;
21
y=b;
22
}
23
}
24
public class A
25
{ public static void main(String args[])
26
{ Point p1,p2; //声明对象p1和p2。
27
p1=new Point(10,10); //为对象分配内存,使用 new 和类中的构造方法。
28
p2=new Point(23,35); //为对象分配内存,使用 new 和类中的构造方法。
29
}
30
}
31![]()
32
//例子3
33
class XiyoujiRenwu
34
{ float height,weight;
35
String head, ear,hand,foot, mouth;
36
void speak(String s)
37
{ head="歪着头";
38
System.out.println(s);
39
}
40
}
41
class Example4_3
42
{ public static void main(String args[])
43
{ XiyoujiRenwu zhubajie,sunwukong;//声明对象。
44
zhubajie=new XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法。
45
sunwukong=new XiyoujiRenwu();
46
zhubajie.height=1.80f; //对象给自己的变量赋值。
47
zhubajie.weight=160f; zhubajie.hand="两只黑手";
48
zhubajie.foot="两只大脚"; zhubajie.head="大头";
49
zhubajie.ear="一双大耳朵"; zhubajie.mouth="一只大嘴";
50
sunwukong.height=1.62f; //对象给自己的变量赋值。
51
sunwukong.weight=1000f; sunwukong.hand="白嫩小手";
52
sunwukong.foot="两只绣脚"; sunwukong.head="绣发飘飘";
53
sunwukong.ear="一对小耳"; sunwukong.mouth="樱头小嘴";
54
System.out.println("zhubajie的身高:"+zhubajie.height);
55
System.out.println("zhubajie的头:"+zhubajie.head);
56
System.out.println("sunwukong的重量:"+sunwukong.weight);
57
System.out.println("sunwukong的头:"+sunwukong.head);
58
zhubajie.speak("俺老猪我想娶媳妇"); //对象调用方法。
59
System.out.println("zhubajie现在的头:"+zhubajie.head);
60
sunwukong.speak("老孙我重1000斤,我想骗八戒背我"); //对象调用方法。
61
System.out.println("sunwukong现在的头:"+sunwukong.head);
62
}
63
}
64![]()
65
//例子4
66
import java.applet.*;
67
import java.awt.*;
68
class Student
69
{ float math,english,sum;
70
float f(float k1,float k2)
71
{ sum=k1*math+k2*english;
72
return sum;
73
}
74
}
75
public class Example4_4 extends Applet
76
{ Student wanghong,lihong;
77
public void init()
78
{ wanghong=new Student(); lihong =new Student();
79
wanghong.math=60.0f; wanghong.english=80f;
80
lihong.math=70.0f; lihong.english=90.0f;
81
wanghong.sum=wanghong.f(2.0f,2.0f);
82
lihong.sum=lihong.f(2.0f,2.0f);
83
}
84
public void paint(Graphics g)
85
{ g.drawString("lihong sum= "+lihong.sum,12,45);
86
g.drawString("wanghong sum="+wanghong.sum,12,60);
87
}
88
}
89![]()
90
//例子5
91
class 梯形
92
{ float 上底,下底,高;
93
梯形()
94
{ 上底=60;
95
下底=40;
96
高=20;
97
}
98
梯形(float x,float y,float h)
99
{ 上底=x;
100
下底=y;
101
高=h;
102
}
103
float 计算面积()
104
{ float 面积;
105
面积=(上底+下底)*高/2.0f;
106
return 面积;
107
}
108
void 修改高(float height)
109
{ 高=height;
110
}
111
float 获取高()
112
{ return 高;
113
}
114
}
115
class Example4_5
116
{ public static void main(String args[])
117
{ 梯形 laderOne=new 梯形(),laderTwo=new 梯形(2.0f,3.0f,10);
118
System.out.println("laderOne的高是:"+laderOne.获取高());
119
System.out.println("laderTwo的高是:"+laderTwo.获取高());
120
System.out.println("laderOne的面积是:"+laderOne.计算面积());
121
System.out.println("laderTwo的面积是:"+laderTwo.计算面积());
122
laderOne.修改高(10);
123
float h=laderOne.获取高();
124
laderTwo.修改高(h*2);
125
System.out.println("laderOne现在的高是:"+laderOne.获取高());
126
System.out.println("laderTwo现在的高是:"+laderTwo.获取高());
127
System.out.println("laderOne现在的面积是:"+laderOne.计算面积());
128
System.out.println("laderTwo现在的面积是:"+laderTwo.计算面积());
129
}
130
}
131![]()
132
//例子6
133
class 圆
134
{ double 半径;
135
圆(double r)
136
{ 半径=r;
137
}
138
double 计算面积()
139
{ return 3.14*半径*半径;
140
}
141
void 修改半径(double 新半径)
142
{ 半径=新半径;
143
}
144
double 获取半径()
145
{ return 半径;
146
}
147
}
148
class 圆锥
149
{ 圆 底圆;
150
double 高;
151
圆锥(圆 circle,double h)
152
{ this.底圆=circle;
153
this.高=h;
154
}
155
double 计算体积()
156
{ double volume;
157
volume=底圆.计算面积()*高/3.0;
158
return volume;
159
}
160
void 修改底圆半径(double r)
161
{ 底圆.修改半径(r);
162
}
163
double 获取底圆半径()
164
{ return 底圆.获取半径();
165
}
166
}
167
class Example4_6
168
{ public static void main(String args[])
169
{ 圆 circle=new 圆(10);
170
圆锥 circular=new 圆锥(circle,20);
171
System.out.println("圆锥底圆半径:"+circular.获取底圆半径());
172
System.out.println("圆锥的体积:"+circular.计算体积());
173
circular.修改底圆半径(100);
174
System.out.println("圆锥底圆半径:"+circular.获取底圆半径());
175
System.out.println("圆锥的体积:"+circular.计算体积());
176
}
177
}
178![]()
179
//例子7
180
class 梯形
181
{ float 上底,高;
182
static float 下底;
183
梯形(float x,float y,float h)
184
{ 上底=x; 下底=y; 高=h;
185
}
186
float 获取下底()
187
{ return 下底;
188
}
189
void 修改下底(float b)
190
{ 下底=b;
191
}
192
}
193
class Example4_7
194
{ public static void main(String args[])
195
{ 梯形 laderOne=new 梯形(3.0f,10.0f,20),laderTwo=new 梯形(2.0f,3.0f,10);
196
System.out.println("laderOne的下底:"+laderOne.获取下底());
197
System.out.println("laderTwo的下底:"+laderTwo.获取下底());
198
laderTwo.修改下底(60);
199
System.out.println("laderOne的下底:"+laderOne.获取下底());
200
System.out.println("laderTwo的下底:"+laderTwo.获取下底());
201
}
202
}
203![]()
204
//例子8
205
import java.applet.*;
206
import java.awt.*;
207
class Family
208
{ static String familyname;
209
String name;
210
int age;
211
}
212
public class Example4_8 extends Applet
213
{ Family father,son1,son2;
214
public void init()
215
{ father=new Family();
216
son1=new Family();son2=new Family();
217
Family.familyname="打"; father.name="鬼子";
218
son1.name="汉奸"; son2.name="恶霸";
219
}
220
public void paint(Graphics g)
221
{ g.drawString("father: "+father.familyname+father.name,5,10);
222
g.drawString("son1: "+son1.familyname+son1.name,5,20);
223
g.drawString("son2: "+son2.familyname+son2.name,5,30);
224
Family.familyname="杀";
225
g.drawString("father:"+father.familyname+father.name,5,40);
226
g.drawString("son1: "+son1.familyname+son1.name,5,50);
227
g.drawString("son2: "+son2.familyname+son2.name,5,65);
228
}
229
}
230![]()
231
//例子9
232
class Fibi
233
{ public long fibinacii(int n)
234
{ long c=0;
235
if(n==1||n==2)
236
c=1;
237
else
238
c=fibinacii(n-1)+fibinacii(n-2);
239
return c;
240
}
241
}
242
public class Example4_9
243
{ public static void main(String args[])
244
{ Fibi a=new Fibi();
245
for(int i=1;i<=10;i++)
246
{ System.out.print(" "+a.fibinacii(i));
247
}
248
}
249
}
250![]()
251
//例子10
252
class 三角形
253
{ double a,b,c;
254
三角形(double a,double b,double c)
255
{ setABC(this,a,b,c);
256
}
257
void setABC(三角形 trangle,double a,double b,double c)
258
{ trangle.a=a;
259
trangle.b=b;
260
trangle.c=c;
261
}
262
}
263
class Example4_10
264
{ public static void main(String args[])
265
{三角形 tra=new 三角形(3,4,5);
266
System.out.print("三角形型的三边是:"+tra.a+","+tra.b+","+tra.c+",");
267
}
268
}
269![]()
270
//例子11
271
package tom.jiafei;
272
public class PrimNumber
273
{ public static void main(String args[])
274
{ int sum=0,i,j;
275
for( i=1;i<=10;i++) //找出10以内的素数。
276
{ for(j=2;j<=i/2;j++)
277
{ if(i%j==0)
278
break;
279
}
280
if(j>i/2) System.out.print(" 素数:"+i);
281
}
282
}
283
}
284![]()
285
//例子12
286
import java.applet.Applet;import java.awt.*;
287
public class Example4_12 extends Applet
288
{ Button redbutton;
289
public void init()
290
{ redbutton=new Button("我是一个红色的按钮");
291
redbutton.setBackground(Color.red);
292
add(redbutton);
293
}
294
public void paint(Graphics g)
295
{ g.drawString("it is a button",30,50);
296
}
297
}
298![]()
299
//例子13
300
import tom.jiafei.*; //引入包tom.jiafei中的类。
301
public class Example4_13
302
{ public static void main(String args[])
303
{ PrimNumber num=new PrimNumber();//用包tom.jiafei中的类创建对象。
304
String a[]={"ok"};
305
System.out.println(a[0]);
306
num.main(a);
307
}
308
}
309![]()
310
//例子14
311
public class Example4_14
312
{ public static void main(String args[])
313
{ PrimNumber num=new PrimNumber();//要保证PrimNuber类和Example4_14类在同一目录中
314
String a[]={"ok"};
315
System.out.println(a[0]);
316
num.main(a);
317
}
318
}
319![]()
320
//例子15
321
Trangel.java:
322
package tom.jiafei;
323
public class Trangle
324
{ double sideA,sideB,sideC;
325
boolean boo;
326
public Trangle(double a,double b,double c)
327
{ sideA=a;sideB=b;sideC=c;
328
if(a+b>c&&a+c>b&&c+b>a)
329
{ System.out.println("我是一个三角形");
330
boo=true;
331
}
332
else
333
{ System.out.println("我不是一个三角形");
334
boo=false;
335
}
336
}
337
public void 计算面积()
338
{ if(boo)
339
{ double p=(sideA+sideB+sideC)/2.0;
340
double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;
341
System.out.println("面积是:"+area);
342
}
343
else
344
{ System.out.println("不是一个三角形,不能计算面积");
345
}
346
}
347
public void 修改三边(double a,double b,double c)
348
{ sideA=a;sideB=b;sideC=c;
349
if(a+b>c&&a+c>b&&c+b>a)
350
{ boo=true;
351
}
352
else
353
{ boo=false;
354
}
355
}
356
}
357![]()
358
Example4_15.java:
359
import tom.jiafei.*;
360
class Example4_15
361
{ public static void main(String args[])
362
{ Trangle trangle=new Trangle(12,3,1);
363
trangle.计算面积();
364
trangle.修改三边(3,4,5);
365
trangle.计算面积();
366
}
367
}
368![]()
369
//例子16
370
class Example4_16
371
{ private int money;
372
Example4_16()
373
{ money=2000;
374
}
375
private int getMoney()
376
{ return money;
377
}
378
public static void main(String args[])
379
{ Example4_16 exa=new Example4_16();
380
exa.money=3000;int m=exa.getMoney();
381
System.out.println("money="+m);
382
}
383
}
384![]()
385
//例子17
386
import java.applet.*;
387
import java.awt.*;
388
class Father
389
{ private int money;
390
float weight,height;
391
String head;
392
String speak(String s)
393
{ return s ;
394
}
395
}
396
class Son extends Father
397
{ String hand ,foot;
398
}
399
public class Example4_17 extends Applet
400
{ Son boy;
401
public void init()
402
{ boy=new Son();
403
boy.weight=1.80f; boy.height=120f;
404
boy.head="一个头"; boy.hand="两只手 ";
405
boy.foot="两只脚";
406
}
407
public void paint(Graphics g)
408
{ g.drawString(boy.speak("我是儿子"),5,20);
409
g.drawString(boy.hand+boy.foot+boy.head+boy.weight+boy.height,5,40);
410
}
411
}
412![]()
413
//例子18
414
Father.java:
415
package tom.jiafei;
416
public class Father
417
{ int height;
418
protected int money;
419
public int weight;
420
public Father(int m) {
421
{ money=m;
422
}
423
protected int getMoney()
424
{ return money;
425
}
426
void setMoney(int newMoney)
427
{ money=newMoney;
428
}
429
}
430
Jerry.java:
431
package sun.com;
432
import tom.jiafei.Father;
433
public class Jerry extends Father //Jerry和Father在不同的包中.
434
{ public Jerry()
435
{ super(20);
436
}
437
public static void main(String args[])
438
{ Jerry jerry=new Jerry();
439
jerry.height=12; //非法,因为Jerry没有继承友好的height。
440
jerry.weight=200; //合法。
441
jerry.money=800; //合法。
442
int m=jerry.getMoney(); //合法。.
443
jerry.setMoney(300); //非法,因为Jerry没有继承友好的方法setMoney。
444
System.out.println("m="+m);
445
}
446
}
447![]()
448
//例子19
449
import java.applet.*;
450
import java.awt.*;
451
class Chengji
452
{ float f(float x,float y)
453
{ return x*y;
454
}
455
}
456
class Xiangjia extends Chengji
457
{ float f(float x,float y)
458
{ return x+y ;
459
}
460
}
461
public class Example4_19 extends Applet
462
{ Xiangjia sum;
463
public void init()
464
{ sum=new Xiangjia();
465
}
466
public void paint(Graphics g)
467
{ g.drawString("sum="+sum.f(4,6),100,40);
468
}
469
}
470![]()
471
//例子20
472
import java.applet.*;
473
import java.awt.*;
474
class Area
475
{ float f(float r )
476
{ return 3.14159f*r*r;
477
}
478
float g(float x,float y)
479
{ return x+y;
480
}
481
}
482
class Circle extends Area
483
{ float f(float r)
484
{ return 3.14159f*2.0f*r;
485
}
486
}
487
public class Example4_20 extends Applet
488
{ Circle yuan;
489
public void init()
490
{ yuan=new Circle();
491
}
492
public void paint(Graphics g)
493
{ g.drawString("yuan= "+yuan.f(5.0f),5,20); //调用子类重写的方法f。
494
g.drawString(" "+yuan.g(2.0f,8.0f),5,40); //调用继承父类的方法g。
495
}
496
}
497![]()
498
//例子21
499
class 类人猿
500
{ private int n=100;
501
void crySpeak(String s)
502
{ System.out.println(s);
503
}
504
}
505
class People extends 类人猿
506
{ void computer(int a,int b)
507
{ int c=a*b;
508
System.out.println(c);
509
}
510
void crySpeak(String s)
511
{ System.out.println("**"+s+"**");
512
}
513
}
514
class Example4_21
515
{ public static void main(String args[])
516
{ 类人猿 monkey=new People(); //monkey是People对象的上转型对象。
517
monkey.crySpeak("I love this game");
518
People people=(People)monkey; //把上转型对象强制转化为子类的对象。
519
people.computer(10,10);
520
}
521
}
522![]()
523
//例子22
524
class 动物
525
{ void cry()
526
{
527
}
528
}
529
class 狗 extends 动物 {
530
{ void cry()
531
{ System.out.println("汪汪
..");
532
}
533
}
534
class 猫 extends 动物
535
{ void cry()
536
{ System.out.println("喵喵
..");
537
}
538
}
539
class Example4_22
540
{ public static void main(String args[])
541
{ 动物 dongwu;
542
if(Math.random()>=0.5)
543
{
544
dongwu=new 狗();
545
dongwu.cry();
546
}
547
else
548
{
549
dongwu=new 猫();
550
ongwu.cry();
551
}
552
}
553
}
554![]()
555
//例子23
556
abstract class 图形
557
{ public abstract double 求面积();
558
}
559
class 梯形 extends 图形
560
{ double a,b,h;
561
梯形(double a,double b,double h)
562
{ this.a=a;this.b=b;this.h=h;
563
}
564
public double 求面积()
565
{ return((1/2.0)*(a+b)*h);
566
}
567
}
568
class 圆形 extends 图形
569
{ double r;
570
圆形(double r)
571
{ his.r=r;
572
}
573
public double 求面积()
574
{ return(3.14*r*r);
575
}
576
}
577
class 堆
578
{ 图形 底;
579
double 高;
580
堆(图形 底,double 高)
581
{ this.底=底;
582
this.高=高;
583
}
584
void 换底(图形 底)
585
{ this.底=底;
586
}
587
public double 求体积()
588
{ return (底.求面积()*高)/3.0;
589
}
590
}
591
public class Example4_23
592
{ public static void main(String args[])
593
{ 堆 zui;
594
图形 tuxing;
595
tuxing=new 梯形(2.0,7.0,10.7);
596
System.out.println("梯形的面积"+tuxing.求面积());
597
zui=new 堆(tuxing,30);
598
System.out.println("梯形底的堆的体积"+zui.求体积());
599
tuxing=new 圆形(10);
600
System.out.println("半径是10的圆的面积"+tuxing.求面积());
601
zui.换底(tuxing);
602
System.out.println("圆形底的堆的体积"+zui.求体积());
603
}
604
}
605![]()
606
//例子24
607
class Student
608
{ int number;String name;
609
Student(int number,String name)
610
{ this.number=number;this.name=name;
611
System.out.println("I am "+name+ "my number is "+number);
612
}
613
}
614
class Univer_Student extends Student
615
{ boolean 婚否;
616
Univer_Student(int number,String name,boolean b)
617
{ super(number,name);
618
婚否=b;
619
System.out.println("婚否="+婚否);
620
}
621
}
622
public class Example4_24
623
{ public static void main(String args[])
624
{ Univer_Student zhang=new Univer_Student(9901,"和晓林",false);
625
}
626
}
627![]()
628
//例子25
629
class Sum
630
{ int n;
631
float f()
632
{ float sum=0;
633
for(int i=1;i<=n;i++)
634
sum=sum+i;
635
return sum;
636
}
637
}
638
class Average extends Sum
639
{ int n;
640
float f()
641
{ float c;
642
super.n=n;
643
c=super.f();
644
return c/n;
645
}
646
float g()
647
{ float c;
648
c=super.f();
649
return c/2;
650
}
651
}
652
public class Example4_25
653
{ public static void main(String args[])
654
{ Average aver=new Average();
655
aver.n=100;
656
float result_1=aver.f();
657
float result_2=aver.g();
658
System.out.println("result_1="+result_1);
659
System.out.println("result_2="+result_2);
660
}
661
}
662![]()
663
//例子26
664
import java.applet.*;import java.awt.*;
665
interface Computable
666
{ final int MAX=100;
667
void speak(String s);
668
int f(int x);
669
float g(float x,float y);
670
}
671
class China implements Computable
672
{ int xuehao;
673
public int f(int x) //不要忘记public关键字。
674
{ int sum=0;
675
for(int i=1;i<=x;i++)
676
{ sum=sum+i;
677
}
678
return sum;
679
}
680
public float g(float x,float y)
681
{ return 6; //至少有return语句。
682
}
683
public void speak(String s)
684
{
685
}
686
}
687
class Japan implements Computable
688
{ int xuehao;
689
public int f(int x)
690
{ return 68;
691
}
692
public float g(float x,float y)
693
{ return x+y;
694
}
695
public void speak(String s)
696
{ //必须有方法体,但体内可以没有任何语句。
697
}
698
}
699
public class Example4_26 extends Applet
700
{ China Li; Japan Henlu;
701
public void init()
702
{ Li=new China(); Henlu=new Japan();
703
Li.xuehao=991898; Henlu.xuehao=941448;
704
}
705
public void paint(Graphics g)
706
{ g.drawString("xuehao:"+Li.MAX+Li.xuehao+"从1到100求和"+Li.f(100),10,20);
707
g.drawString("xuehao:"+Henlu.MAX+Henlu.xuehao+"加法"+Henlu.g(2.0f,3.0f),10,40);
708
}
709
}
710![]()
711
//例子27
712
interface 收费
713
{ public void 收取费用();
714
}
715
class 公共汽车 implements 收费
716
{ public void 收取费用()
717
{ System.out.println("公共汽车:一元/张,不计算公里数");
718
}
719
}
720
class 出租车 implements 收费
721
{ public void 收取费用()
722
{ System.out.println("出租车:1.60元/公里,起价3公里");
723
}
724
}
725
class 电影院 implements 收费
726
{ public void 收取费用()
727
{ System.out.println("电影院:门票,十元/张");
728
}
729
}
730
class Example4_27
731
{ public static void main(String args[])
732
{ 公共汽车 七路=new 公共汽车();
733
出租车 天宇=new 出租车();
734
电影院 红星=new 电影院();
735
七路.收取费用();天宇.收取费用();
736
红星.收取费用();
737
}
738
}
739![]()
740
//例子28
741
interface ShowMessage
742
{ void 显示商标(String s);
743
}
744
class TV implements ShowMessage
745
{ public void 显示商标(String s)
746
{ System.out.println(s);
747
}
748
}
749
class PC implements ShowMessage
750
{ public void 显示商标(String s)
751
{ System.out.println(s);
752
}
753
}
754
public class Example4_28
755
{ public static void main(String args[])
756
{ ShowMessage sm; //声明接口变量。
757
sm=new TV(); //接口变量中存放对象的引用。
758
sm.显示商标("长城牌电视机"); //接口回调。
759
sm=new PC(); //接口变量中存放对象的引用。
760
sm.显示商标("联想奔月5008PC机"); //接口回调。
761
}
762
}
763![]()
764
//例子29
765
interface Computerable
766
{ public double 求面积();
767
}
768
class 梯形 implements Computerable
769
{ double a,b,h;
770
梯形(double a,double b,double h)
771
{ this.a=a;this.b=b;this.h=h;
772
}
773
public double 求面积()
774
{ return((1/2.0)*(a+b)*h);
775
}
776
}
777
class 圆形 implements Computerable
778
{ double r;
779
圆形(double r)
780
{ this.r=r;
781
}
782
public double 求面积()
783
{ eturn(3.14*r*r);
784
}
785
}
786
class 堆
787
{ Computerable 底; //声明一个接口变量,可以回调"求面积"方法。
788
double 高;
789
堆(Computerable 底,double 高)
790
{ this.底=底;
791
this.高=高;
792
}
793
void 换底(Computerable 底)
794
{ this.底=底;
795
}
796
public double 求体积()
797
{ return (底.求面积()*高)/3.0;
798
}
799
}
800
public class Example4_29
801
{ public static void main(String args[])
802
{ 堆 zui;
803
Computerable bottom;
804
bottom=new 梯形(2.0,7.0,10.7); //接口变量中存放对象的引用。
805
System.out.println("梯形的面积"+bottom.求面积()); //bottom接口回调,求面积。
806
zui=new 堆(bottom,30);
807
System.out.println("梯形底的堆的体积"+zui.求体积());
808
bottom=new 圆形(10); //接口变量中存放对象的引用。
809
System.out.println("半径是10的圆的面积"+bottom.求面积());
810
zui.换底(bottom);
811
System.out.println("圆形底的堆的体积"+zui.求体积());
812
}
813
}
814![]()
//例子12
class XiyoujiRenwu 3
{ float height,weight;4
String head, ear,hand,foot, mouth;5
void speak(String s) 6
{ System.out.println(s);7
}8
}9
class A10
{ public static void main(String args[])11
{ XiyoujiRenwu zhubajie; //声明对象。12
zhubajie=new XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法。13
}14
}15

16
//例子217
class Point 18
{ int x,y;19
Point(int a,int b)20
{ x=a;21
y=b;22
}23
}24
public class A 25
{ public static void main(String args[])26
{ Point p1,p2; //声明对象p1和p2。27
p1=new Point(10,10); //为对象分配内存,使用 new 和类中的构造方法。28
p2=new Point(23,35); //为对象分配内存,使用 new 和类中的构造方法。29
}30
}31

32
//例子333
class XiyoujiRenwu34
{ float height,weight;35
String head, ear,hand,foot, mouth;36
void speak(String s)37
{ head="歪着头";38
System.out.println(s);39
}40
}41
class Example4_342
{ public static void main(String args[]) 43
{ XiyoujiRenwu zhubajie,sunwukong;//声明对象。44
zhubajie=new XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法。45
sunwukong=new XiyoujiRenwu();46
zhubajie.height=1.80f; //对象给自己的变量赋值。47
zhubajie.weight=160f; zhubajie.hand="两只黑手";48
zhubajie.foot="两只大脚"; zhubajie.head="大头"; 49
zhubajie.ear="一双大耳朵"; zhubajie.mouth="一只大嘴"; 50
sunwukong.height=1.62f; //对象给自己的变量赋值。51
sunwukong.weight=1000f; sunwukong.hand="白嫩小手";52
sunwukong.foot="两只绣脚"; sunwukong.head="绣发飘飘"; 53
sunwukong.ear="一对小耳"; sunwukong.mouth="樱头小嘴";54
System.out.println("zhubajie的身高:"+zhubajie.height);55
System.out.println("zhubajie的头:"+zhubajie.head);56
System.out.println("sunwukong的重量:"+sunwukong.weight);57
System.out.println("sunwukong的头:"+sunwukong.head);58
zhubajie.speak("俺老猪我想娶媳妇"); //对象调用方法。59
System.out.println("zhubajie现在的头:"+zhubajie.head);60
sunwukong.speak("老孙我重1000斤,我想骗八戒背我"); //对象调用方法。61
System.out.println("sunwukong现在的头:"+sunwukong.head);62
}63
}64

65
//例子466
import java.applet.*;67
import java.awt.*;68
class Student 69
{ float math,english,sum;70
float f(float k1,float k2)71
{ sum=k1*math+k2*english;72
return sum;73
} 74
}75
public class Example4_4 extends Applet 76
{ Student wanghong,lihong;77
public void init() 78
{ wanghong=new Student(); lihong =new Student();79
wanghong.math=60.0f; wanghong.english=80f;80
lihong.math=70.0f; lihong.english=90.0f;81
wanghong.sum=wanghong.f(2.0f,2.0f);82
lihong.sum=lihong.f(2.0f,2.0f); 83
}84
public void paint(Graphics g)85
{ g.drawString("lihong sum= "+lihong.sum,12,45);86
g.drawString("wanghong sum="+wanghong.sum,12,60);87
}88
} 89

90
//例子591
class 梯形 92
{ float 上底,下底,高;93
梯形()94
{ 上底=60;95
下底=40;96
高=20;97
}98
梯形(float x,float y,float h) 99
{ 上底=x;100
下底=y;101
高=h;102
}103
float 计算面积() 104
{ float 面积;105
面积=(上底+下底)*高/2.0f;106
return 面积;107
}108
void 修改高(float height) 109
{ 高=height;110
}111
float 获取高() 112
{ return 高;113
}114
}115
class Example4_5 116
{ public static void main(String args[]) 117
{ 梯形 laderOne=new 梯形(),laderTwo=new 梯形(2.0f,3.0f,10);118
System.out.println("laderOne的高是:"+laderOne.获取高());119
System.out.println("laderTwo的高是:"+laderTwo.获取高());120
System.out.println("laderOne的面积是:"+laderOne.计算面积());121
System.out.println("laderTwo的面积是:"+laderTwo.计算面积());122
laderOne.修改高(10);123
float h=laderOne.获取高();124
laderTwo.修改高(h*2);125
System.out.println("laderOne现在的高是:"+laderOne.获取高());126
System.out.println("laderTwo现在的高是:"+laderTwo.获取高());127
System.out.println("laderOne现在的面积是:"+laderOne.计算面积());128
System.out.println("laderTwo现在的面积是:"+laderTwo.计算面积());129
} 130
} 131

132
//例子6133
class 圆 134
{ double 半径;135
圆(double r)136
{ 半径=r;137
}138
double 计算面积() 139
{ return 3.14*半径*半径;140
}141
void 修改半径(double 新半径)142
{ 半径=新半径;143
}144
double 获取半径() 145
{ return 半径;146
}147
}148
class 圆锥 149
{ 圆 底圆;150
double 高;151
圆锥(圆 circle,double h) 152
{ this.底圆=circle;153
this.高=h;154
}155
double 计算体积() 156
{ double volume;157
volume=底圆.计算面积()*高/3.0;158
return volume;159
}160
void 修改底圆半径(double r) 161
{ 底圆.修改半径(r);162
}163
double 获取底圆半径() 164
{ return 底圆.获取半径();165
}166
}167
class Example4_6 168
{ public static void main(String args[])169
{ 圆 circle=new 圆(10);170
圆锥 circular=new 圆锥(circle,20);171
System.out.println("圆锥底圆半径:"+circular.获取底圆半径()); 172
System.out.println("圆锥的体积:"+circular.计算体积());173
circular.修改底圆半径(100);174
System.out.println("圆锥底圆半径:"+circular.获取底圆半径());175
System.out.println("圆锥的体积:"+circular.计算体积()); 176
}177
}178

179
//例子7180
class 梯形 181
{ float 上底,高;182
static float 下底;183
梯形(float x,float y,float h) 184
{ 上底=x; 下底=y; 高=h;185
}186
float 获取下底()187
{ return 下底;188
}189
void 修改下底(float b)190
{ 下底=b; 191
}192
}193
class Example4_7 194
{ public static void main(String args[]) 195
{ 梯形 laderOne=new 梯形(3.0f,10.0f,20),laderTwo=new 梯形(2.0f,3.0f,10);196
System.out.println("laderOne的下底:"+laderOne.获取下底());197
System.out.println("laderTwo的下底:"+laderTwo.获取下底());198
laderTwo.修改下底(60);199
System.out.println("laderOne的下底:"+laderOne.获取下底());200
System.out.println("laderTwo的下底:"+laderTwo.获取下底());201
} 202
} 203

204
//例子8205
import java.applet.*;206
import java.awt.*;207
class Family 208
{ static String familyname;209
String name; 210
int age; 211
}212
public class Example4_8 extends Applet 213
{ Family father,son1,son2;214
public void init() 215
{ father=new Family();216
son1=new Family();son2=new Family();217
Family.familyname="打"; father.name="鬼子";218
son1.name="汉奸"; son2.name="恶霸";219
}220
public void paint(Graphics g) 221
{ g.drawString("father: "+father.familyname+father.name,5,10);222
g.drawString("son1: "+son1.familyname+son1.name,5,20);223
g.drawString("son2: "+son2.familyname+son2.name,5,30);224
Family.familyname="杀";225
g.drawString("father:"+father.familyname+father.name,5,40);226
g.drawString("son1: "+son1.familyname+son1.name,5,50);227
g.drawString("son2: "+son2.familyname+son2.name,5,65);228
}229
}230

231
//例子9232
class Fibi 233
{ public long fibinacii(int n)234
{ long c=0;235
if(n==1||n==2)236
c=1;237
else238
c=fibinacii(n-1)+fibinacii(n-2); 239
return c;240
}241
}242
public class Example4_9 243
{ public static void main(String args[])244
{ Fibi a=new Fibi(); 245
for(int i=1;i<=10;i++) 246
{ System.out.print(" "+a.fibinacii(i));247
}248
}249
}250

251
//例子10252
class 三角形 253
{ double a,b,c;254
三角形(double a,double b,double c) 255
{ setABC(this,a,b,c);256
}257
void setABC(三角形 trangle,double a,double b,double c) 258
{ trangle.a=a;259
trangle.b=b;260
trangle.c=c;261
}262
}263
class Example4_10 264
{ public static void main(String args[])265
{三角形 tra=new 三角形(3,4,5);266
System.out.print("三角形型的三边是:"+tra.a+","+tra.b+","+tra.c+","); 267
}268
}269

270
//例子11271
package tom.jiafei;272
public class PrimNumber 273
{ public static void main(String args[])274
{ int sum=0,i,j;275
for( i=1;i<=10;i++) //找出10以内的素数。276
{ for(j=2;j<=i/2;j++)277
{ if(i%j==0)278
break;279
}280
if(j>i/2) System.out.print(" 素数:"+i);281
}282
}283
}284

285
//例子12286
import java.applet.Applet;import java.awt.*;287
public class Example4_12 extends Applet 288
{ Button redbutton;289
public void init()290
{ redbutton=new Button("我是一个红色的按钮"); 291
redbutton.setBackground(Color.red);292
add(redbutton);293
}294
public void paint(Graphics g) 295
{ g.drawString("it is a button",30,50);296
}297
}298

299
//例子13300
import tom.jiafei.*; //引入包tom.jiafei中的类。301
public class Example4_13302
{ public static void main(String args[]) 303
{ PrimNumber num=new PrimNumber();//用包tom.jiafei中的类创建对象。304
String a[]={"ok"};305
System.out.println(a[0]);306
num.main(a);307
}308
}309

310
//例子14311
public class Example4_14 312
{ public static void main(String args[]) 313
{ PrimNumber num=new PrimNumber();//要保证PrimNuber类和Example4_14类在同一目录中314
String a[]={"ok"};315
System.out.println(a[0]);316
num.main(a);317
}318
}319

320
//例子15321
Trangel.java:322
package tom.jiafei;323
public class Trangle 324
{ double sideA,sideB,sideC;325
boolean boo;326
public Trangle(double a,double b,double c) 327
{ sideA=a;sideB=b;sideC=c;328
if(a+b>c&&a+c>b&&c+b>a)329
{ System.out.println("我是一个三角形");330
boo=true;331
} 332
else333
{ System.out.println("我不是一个三角形");334
boo=false;335
}336
}337
public void 计算面积() 338
{ if(boo)339
{ double p=(sideA+sideB+sideC)/2.0;340
double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;341
System.out.println("面积是:"+area);342
}343
else344
{ System.out.println("不是一个三角形,不能计算面积");345
}346
} 347
public void 修改三边(double a,double b,double c)348
{ sideA=a;sideB=b;sideC=c;349
if(a+b>c&&a+c>b&&c+b>a)350
{ boo=true;351
} 352
else353
{ boo=false;354
}355
}356
}357

358
Example4_15.java:359
import tom.jiafei.*;360
class Example4_15 361
{ public static void main(String args[])362
{ Trangle trangle=new Trangle(12,3,1);363
trangle.计算面积();364
trangle.修改三边(3,4,5);365
trangle.计算面积();366
}367
}368

369
//例子16370
class Example4_16 371
{ private int money;372
Example4_16() 373
{ money=2000;374
} 375
private int getMoney() 376
{ return money;377
} 378
public static void main(String args[]) 379
{ Example4_16 exa=new Example4_16();380
exa.money=3000;int m=exa.getMoney();381
System.out.println("money="+m);382
}383
}384

385
//例子17386
import java.applet.*;387
import java.awt.*;388
class Father 389
{ private int money;390
float weight,height;391
String head;392
String speak(String s) 393
{ return s ;394
}395
}396
class Son extends Father 397
{ String hand ,foot;398
} 399
public class Example4_17 extends Applet 400
{ Son boy;401
public void init() 402
{ boy=new Son();403
boy.weight=1.80f; boy.height=120f;404
boy.head="一个头"; boy.hand="两只手 ";405
boy.foot="两只脚";406
}407
public void paint(Graphics g) 408
{ g.drawString(boy.speak("我是儿子"),5,20);409
g.drawString(boy.hand+boy.foot+boy.head+boy.weight+boy.height,5,40);410
}411
} 412

413
//例子18414
Father.java:415
package tom.jiafei;416
public class Father 417
{ int height;418
protected int money;419
public int weight;420
public Father(int m) {421
{ money=m;422
}423
protected int getMoney() 424
{ return money;425
}426
void setMoney(int newMoney) 427
{ money=newMoney;428
} 429
}430
Jerry.java:431
package sun.com;432
import tom.jiafei.Father;433
public class Jerry extends Father //Jerry和Father在不同的包中.434
{ public Jerry() 435
{ super(20);436
}437
public static void main(String args[]) 438
{ Jerry jerry=new Jerry();439
jerry.height=12; //非法,因为Jerry没有继承友好的height。440
jerry.weight=200; //合法。441
jerry.money=800; //合法。442
int m=jerry.getMoney(); //合法。.443
jerry.setMoney(300); //非法,因为Jerry没有继承友好的方法setMoney。444
System.out.println("m="+m); 445
}446
}447

448
//例子19449
import java.applet.*;450
import java.awt.*;451
class Chengji 452
{ float f(float x,float y) 453
{ return x*y;454
}455
}456
class Xiangjia extends Chengji 457
{ float f(float x,float y) 458
{ return x+y ;459
}460
}461
public class Example4_19 extends Applet 462
{ Xiangjia sum;463
public void init() 464
{ sum=new Xiangjia();465
}466
public void paint(Graphics g) 467
{ g.drawString("sum="+sum.f(4,6),100,40);468
}469
} 470

471
//例子20472
import java.applet.*;473
import java.awt.*;474
class Area 475
{ float f(float r ) 476
{ return 3.14159f*r*r;477
}478
float g(float x,float y) 479
{ return x+y;480
}481
}482
class Circle extends Area 483
{ float f(float r)484
{ return 3.14159f*2.0f*r;485
} 486
}487
public class Example4_20 extends Applet 488
{ Circle yuan;489
public void init() 490
{ yuan=new Circle();491
} 492
public void paint(Graphics g) 493
{ g.drawString("yuan= "+yuan.f(5.0f),5,20); //调用子类重写的方法f。494
g.drawString(" "+yuan.g(2.0f,8.0f),5,40); //调用继承父类的方法g。495
}496
} 497

498
//例子21499
class 类人猿 500
{ private int n=100;501
void crySpeak(String s) 502
{ System.out.println(s); 503
} 504
}505
class People extends 类人猿 506
{ void computer(int a,int b)507
{ int c=a*b;508
System.out.println(c); 509
}510
void crySpeak(String s) 511
{ System.out.println("**"+s+"**"); 512
} 513
}514
class Example4_21 515
{ public static void main(String args[]) 516
{ 类人猿 monkey=new People(); //monkey是People对象的上转型对象。517
monkey.crySpeak("I love this game");518
People people=(People)monkey; //把上转型对象强制转化为子类的对象。519
people.computer(10,10);520
}521
}522

523
//例子22524
class 动物 525
{ void cry() 526
{527
} 528
}529
class 狗 extends 动物 { 530
{ void cry() 531
{ System.out.println("汪汪
.."); 532
} 533
}534
class 猫 extends 动物 535
{ void cry() 536
{ System.out.println("喵喵
.."); 537
} 538
}539
class Example4_22 540
{ public static void main(String args[]) 541
{ 动物 dongwu;542
if(Math.random()>=0.5) 543
{544
dongwu=new 狗();545
dongwu.cry(); 546
}547
else548
{549
dongwu=new 猫();550
ongwu.cry();551
}552
}553
}554

555
//例子23556
abstract class 图形 557
{ public abstract double 求面积();558
}559
class 梯形 extends 图形 560
{ double a,b,h;561
梯形(double a,double b,double h)562
{ this.a=a;this.b=b;this.h=h;563
}564
public double 求面积() 565
{ return((1/2.0)*(a+b)*h);566
}567
}568
class 圆形 extends 图形 569
{ double r;570
圆形(double r)571
{ his.r=r;572
}573
public double 求面积()574
{ return(3.14*r*r);575
}576
}577
class 堆 578
{ 图形 底;579
double 高;580
堆(图形 底,double 高) 581
{ this.底=底;582
this.高=高;583
}584
void 换底(图形 底) 585
{ this.底=底;586
}587
public double 求体积() 588
{ return (底.求面积()*高)/3.0;589
}590
}591
public class Example4_23592
{ public static void main(String args[]) 593
{ 堆 zui;594
图形 tuxing;595
tuxing=new 梯形(2.0,7.0,10.7);596
System.out.println("梯形的面积"+tuxing.求面积());597
zui=new 堆(tuxing,30);598
System.out.println("梯形底的堆的体积"+zui.求体积());599
tuxing=new 圆形(10);600
System.out.println("半径是10的圆的面积"+tuxing.求面积());601
zui.换底(tuxing);602
System.out.println("圆形底的堆的体积"+zui.求体积());603
}604
}605

606
//例子24607
class Student 608
{ int number;String name;609
Student(int number,String name) 610
{ this.number=number;this.name=name;611
System.out.println("I am "+name+ "my number is "+number);612
}613
}614
class Univer_Student extends Student 615
{ boolean 婚否;616
Univer_Student(int number,String name,boolean b) 617
{ super(number,name);618
婚否=b;619
System.out.println("婚否="+婚否);620
}621
}622
public class Example4_24 623
{ public static void main(String args[]) 624
{ Univer_Student zhang=new Univer_Student(9901,"和晓林",false);625
}626
}627

628
//例子25629
class Sum 630
{ int n;631
float f() 632
{ float sum=0;633
for(int i=1;i<=n;i++)634
sum=sum+i;635
return sum; 636
}637
}638
class Average extends Sum 639
{ int n; 640
float f() 641
{ float c;642
super.n=n;643
c=super.f();644
return c/n; 645
}646
float g() 647
{ float c;648
c=super.f();649
return c/2; 650
}651
}652
public class Example4_25 653
{ public static void main(String args[]) 654
{ Average aver=new Average();655
aver.n=100;656
float result_1=aver.f();657
float result_2=aver.g();658
System.out.println("result_1="+result_1);659
System.out.println("result_2="+result_2);660
}661
}662

663
//例子26664
import java.applet.*;import java.awt.*;665
interface Computable 666
{ final int MAX=100;667
void speak(String s);668
int f(int x);669
float g(float x,float y);670
}671
class China implements Computable 672
{ int xuehao;673
public int f(int x) //不要忘记public关键字。674
{ int sum=0;675
for(int i=1;i<=x;i++)676
{ sum=sum+i;677
}678
return sum;679
}680
public float g(float x,float y)681
{ return 6; //至少有return语句。 682
}683
public void speak(String s) 684
{ 685
}686
}687
class Japan implements Computable 688
{ int xuehao;689
public int f(int x) 690
{ return 68; 691
}692
public float g(float x,float y) 693
{ return x+y;694
}695
public void speak(String s) 696
{ //必须有方法体,但体内可以没有任何语句。697
}698
}699
public class Example4_26 extends Applet 700
{ China Li; Japan Henlu;701
public void init() 702
{ Li=new China(); Henlu=new Japan(); 703
Li.xuehao=991898; Henlu.xuehao=941448;704
}705
public void paint(Graphics g) 706
{ g.drawString("xuehao:"+Li.MAX+Li.xuehao+"从1到100求和"+Li.f(100),10,20);707
g.drawString("xuehao:"+Henlu.MAX+Henlu.xuehao+"加法"+Henlu.g(2.0f,3.0f),10,40);708
}709
} 710

711
//例子27712
interface 收费 713
{ public void 收取费用();714
}715
class 公共汽车 implements 收费 716
{ public void 收取费用() 717
{ System.out.println("公共汽车:一元/张,不计算公里数");718
}719
} 720
class 出租车 implements 收费 721
{ public void 收取费用() 722
{ System.out.println("出租车:1.60元/公里,起价3公里");723
}724
}725
class 电影院 implements 收费 726
{ public void 收取费用()727
{ System.out.println("电影院:门票,十元/张");728
}729
}730
class Example4_27 731
{ public static void main(String args[])732
{ 公共汽车 七路=new 公共汽车();733
出租车 天宇=new 出租车();734
电影院 红星=new 电影院();735
七路.收取费用();天宇.收取费用();736
红星.收取费用();737
}738
}739

740
//例子28741
interface ShowMessage 742
{ void 显示商标(String s);743
}744
class TV implements ShowMessage 745
{ public void 显示商标(String s) 746
{ System.out.println(s);747
}748
}749
class PC implements ShowMessage 750
{ public void 显示商标(String s) 751
{ System.out.println(s);752
}753
}754
public class Example4_28 755
{ public static void main(String args[])756
{ ShowMessage sm; //声明接口变量。757
sm=new TV(); //接口变量中存放对象的引用。758
sm.显示商标("长城牌电视机"); //接口回调。759
sm=new PC(); //接口变量中存放对象的引用。760
sm.显示商标("联想奔月5008PC机"); //接口回调。761
} 762
}763

764
//例子29765
interface Computerable766
{ public double 求面积();767
}768
class 梯形 implements Computerable 769
{ double a,b,h;770
梯形(double a,double b,double h) 771
{ this.a=a;this.b=b;this.h=h;772
}773
public double 求面积() 774
{ return((1/2.0)*(a+b)*h);775
}776
}777
class 圆形 implements Computerable 778
{ double r;779
圆形(double r) 780
{ this.r=r;781
}782
public double 求面积() 783
{ eturn(3.14*r*r);784
}785
}786
class 堆 787
{ Computerable 底; //声明一个接口变量,可以回调"求面积"方法。788
double 高;789
堆(Computerable 底,double 高) 790
{ this.底=底;791
this.高=高;792
}793
void 换底(Computerable 底) 794
{ this.底=底;795
}796
public double 求体积()797
{ return (底.求面积()*高)/3.0;798
}799
}800
public class Example4_29 801
{ public static void main(String args[])802
{ 堆 zui;803
Computerable bottom;804
bottom=new 梯形(2.0,7.0,10.7); //接口变量中存放对象的引用。805
System.out.println("梯形的面积"+bottom.求面积()); //bottom接口回调,求面积。806
zui=new 堆(bottom,30);807
System.out.println("梯形底的堆的体积"+zui.求体积());808
bottom=new 圆形(10); //接口变量中存放对象的引用。809
System.out.println("半径是10的圆的面积"+bottom.求面积());810
zui.换底(bottom);811
System.out.println("圆形底的堆的体积"+zui.求体积());812
}813
}814



浙公网安备 33010602011771号