一、实验目的:
1.了解如何使用类及其成员的修饰符,理解类的继承性,掌握方法的继承、重载和覆盖。
二、实验环境:
Eclipce
三、实验内容:
(一)修饰符
1.编写源程序KY4_1.java,通过两个类StaticDome、KY4_1来说明类变量和与对象变量,以及类方法和对
象方法的区别。源代码如下:
package ch4;
class StaticDemo {
static int x;
int y;
public static int getX() {
return x;
}
public static void setX(int newX) {
x = newX;
}
public int getY() {
return y;
}
public void setY(int newY) {
y = newY;
}
}
public class KY4_1 {
public static void main(String[] args) {
System.out.println("类变量x="+StaticDemo.getX());
System.out.println("对象变量y="+StaticDemo.getY());
StaticDemo a= new StaticDemo();
StaticDemo b= new StaticDemo();
a.setX(1);
a.setY(2);
b.setX(3);
b.setY(4);
System.out.println("类变量a.x="+a.getX());
System.out.println("对象变量a.y="+a.getY());
System.out.println("类变量b.x="+b.getX());
System.out.println("对象变量b.y="+b.getY());
}
}
程序出错,对面的实例变量和实例方法不能直接通过类名访问,要使程序能正确运行可删除代码行System.out.println("对象变量y="+StaticDemo.getY());或者将StaticDemo类中的实例变量和实例方法都加上修饰词static使它们成为类变量和类方法,程序正确运行结果截图:
(二)方法中参数传递的练习
1.编写一个程序文件KY4_2.java。程序功能如下:有一个主方法main() 以及一个求平方和的方法int
square(int x, int y)。square方法计算参数x 和y的平方和,并返回该平方和值。在主方法main
中定义两个整型变量,并给它们赋一个初值,然后使用这两个变量作为实际参数来调用square方法,
求出平方和,最后输出平方和。
程序源代码:
package ch4;
public class KY4_2 {
static int square(int x,int y){
return (x*x+y*y);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int x;
int y;
x=3;
y=4;
System.out.println(square(x,y));
}
}
程序运行结果截图:
(三)类的继承性练习
1.编写两个程序文件KY4_3.java和KY4_4.java,实现类的继承。KY4_3定义成员变量xm(姓名),xh(学号),定义方法print()输出姓名和学号。子类KY4_4继承父类 KY4_3,其不仅具有父类的成员变量 xm(姓名)、xh(学号),还定义了新的成员变量 xy(学院)、xi(系)。在子类KY4_4中重写了父类的方法print(),在该方法中不仅输出学生的姓名和学号,而且还输出学生的学院和系。另外,在子类KY4_4中还定义了一个主方法main。首先,在主方法中创建一个父类 KY4_3的对象f,设置f的姓名为"帅零",学号为"12321",并且调用print()方法输出对象f的姓名和学号。接着,在主方法中创建一个子类 KY4_4的对象s,设置s的姓名为"郭娜",学号为"12345",学院为"经济管理学院",系为"信息管理系",并且调用print()方法输出对象s的姓名,学号,学院和系。
程序源代码:
KY4_3.java:
package ch4;
public class KY4_3
{
protected String xm; //姓名
protected int xh; //学号
void setdata(String m,int h) //该方法为姓名和学号赋初始值
{
xm =m;
xh = h;
}
public void print() //输出学生的姓名和学号
{
System.out.println(xm+", "+xh);
}
}
KY4_4.java:
package ch4;
public class KY4_4 extends KY4_3{
String xy;
String xi;
public void print(){
System.out.println(xm+", "+xh+", "+xy+", "+xi);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
KY4_3 f=new KY4_3();
KY4_4 s=new KY4_4();
f.xm="帅零";
f.xh=12321;
f.print();
s.xm="郭娜";
s.xh=12345;
s.xy="经济管理学院";
s.xi="信息管理系";
s.print();
}
}
程序运行结果截图:
(四)思考题:说明类的继承和多态都有什么作用?
答:继承可以减少代码的书写量,实现代码复用,子类可以在已有的基础上进行修改和扩展从而实现 的特定功能;多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为,多态的作用就是消除类型之间的耦合耦合关系。
四、心得体会:
用static修饰的变量称为类变量,当类中有类变量时,同new运算符创建的多个对象共享这个变量,且可以通过类名直接访问这个变量,用static修饰的方法称为类方法,在类方法被加载到内存时就分配的相应的入口地址,从而类方法可以被类创建的任何对象调用执行,也可以通过类名调用。如果一个子类继承了父类,若他们在一个包中,子类就可以调用父类中不是private的成员变量和方法,同时子类还能在继承的基础上进行扩展,新增自己的变量和方法,也可以重写从父类继承的方法。