当前位置:文档之家› 实验三 类与对象(1)——耿祥义

实验三 类与对象(1)——耿祥义

3)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
定义Test3_2类,在其中编写一个main方法,在其中创建分别创建三个类的对象,并显示Circle,Lader,Trangle对象的属性信息和面积值。对Trangle对象,还要显示其是否可以构成三角形的信息。
(二)使用修饰符
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。public,private,protected,package,static,final,transient,volatile
程序功能:通过两个类StaticDemo、KY2_4说明静态变量/方法与实例变量/方法的区别。
③将class CCircle中的变量double pi; double radius;加上private修饰符,进行编译会出现什么问题,为什么?
④将void setCircle(double r, double p),double getRadius()和double getCircleArea()加上修饰符static,重新编译会出现什么问题?仍用static,怎样修改别的地方来纠正这个错误?在main中引用这些方法时不用创建对象则怎样引用?
程序功能:描述一个圆类,其主要属性为半径,还有一个非常重要的常量是圆周率。该圆可以求出面积,可以设置半径和取得半径大小。
class CCircle
{ double pi;
double radius;
double getRadius()
{ return radius;
}
void setCircle(double r, double p)
void aaa()
{a=100;
System.out.println("classA的输出"+a);
}
}
class classB
{int b;
void bbb()
{b=200;
System.out.println("classB的输出"+b);
}
}
----------------------Ex5_2.java源代码--------------------------
1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
2)Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
package mypackage1;
public class Ex5_2
{ public static void main(String args[])
{ classA objA=new classA();
classB objB=new classB();
objA.aaa();
objB.bbb();
定义Test3_1类,在其中编写一个main方法,在其中创建Car类的一个对象(“成龙”,200f,25f),并打印出该对象的属性值,可以看到如下输出信息:
车主姓名:成龙
当前车速:200
当前转向角度:25
修改车速后,车速变为:80
执行停车操作后,车速变为:0
2.三角形、梯形和圆形的类封装
编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:
cir1.setCircle(2.0,3.1416);
System.out.println("园半径="+cir1.getRadius());
System.out.println("园面积="+cir1.getCircleArea());
cir1.pi=3.14159;
cir1.radius=10.0;
编写类文件Demo3_4.java,程序源代码如下:
class StaticDemo {
static int x;
int y;
public static int getX() {
return x;
}
public static void setX(int newX) {
x = newX;
}
public int getY() {
1.不使用包(使用默认包)
在工程文件project1下创建两个java文件,一个是mypack.java文件,定义两个类classA和classB,类修饰符为默认。另一个是主类文件,在该类中使用classA和classB。两个java文件全部使用默认包。
----------------mypack.java源代码----------------------------
System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译时将出错
StaticDemo a= new StaticDemo();
StaticDemo b= new StaticDemo();
a.setX(1);
a.setY(2);
b.setX(3);
②上条件不变,在主类class Demo3_6加进import mypackage1.*语句,再编译,看是什么编译错误?(提示:载入了mypackag1包,可以识别这两个class,但这两个类不是public,不能被不同包使用)
③将类classA和classB修饰为public再编译,看发生了什么?为什么?(提示:一个java文件中只能有一个public类且类名与文件名相同,因此每个public类用一个单独的java文件,且文件名与类名相同)
④上面通过编译后,再看Demo3_6还存在什么错误?(提示:classA和classB中的方法修饰符是默认的,另一个包中的代码允许访问吗?)
⑤将方法aaa()和bbb()修饰为public,重新编译,所有错误是否消失?无错误后可运行主类,观察运行结果。
四、实验练习题
1.设计一个用来描述汽车的类Car,使用类的实例成员变量来表示汽车的车主姓名(name)、当前的速度(speed)和当前方向盘的转向角度(tangle),使用类的实例成员方法来表示改变汽车的速度(setSpeed)、停车操作(stop)以及显示相关信息的方法(show)的操作。
}}
运行主类,观察运行结果。
【提示】如上两个实验表明封装在同包里的类,只要成员不是私有的,相互之间透明,相当在一个java文件中一样使用。
3.按【思考】提示理解打包的应用过程。
【思考】
①将主类文件Demo3_6.java封装在另一个包mypackage2,再进行编译,看编译结果提示什么错误?(提示:两者不在同包,classA和classB不能被识别)。
(3)编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;
(4)编写体现类的多态性(成员方法重载、构造方法重载)的程序。
三、实验内容
(一)Java类的设计与编程
1.创建一个Application应用程序Demo3_2.java文件.在Demo3_2.java文件中定义两个类。一个是CCircle,另一个是主类Demo3_2。
class classA
{ int a;
void aaa()
{a=100;
System.out.println("classA的输出"+a);
}
}
class classB
{int b;
void bbb()
{b=200;
System.out.println("classB的输出"+b);
}
}
----------------------Demo3_6.java源代码--------------------------
2.采用包。两个java文件用同一个包,即编译后的三个class文件放在同一个mypackage1包中。
----------------------mypack.java源代码----------------------------
package mypackage1;
class classA
{ int a;
}
}
对上面的源程序进行编译,排错并运行。
【思考】1.实例成员和类(静态)成员的区别;
2.说明程序中有多个类时,如何确定源程序文件的名称。
(三)包的定义与使用
包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java语言提供系统包,其中包含了大量的类,可以在编写Java程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API包,所谓API(Application Program Interface)即应用程序接口。API包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API包都以“java.”开头,以区别用户创建的包。
public class Demo3_6
{ public static void main(String args[])
{ classA objA=new classA();
classB objB=new classB();
objA.aaa();
objB.bbb();
}}
运行Demo3_6,观察运行结果。tY(int newY) {
y = newY;
}
}
public class Demo3_4 {
相关主题