桂 林 理 工 大 学
实 验 报 告
班级 软件16-1班 学号 3162052051116 姓名 张识虔 同组实验者
实验名称 修饰符与继承性 日期 2018年06 月15日
一、实验目的:
二、实验环境:
三、实验内容:
一)使用修饰符
3. 编译并运行程序 KY4_1.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() {
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());
无法从类型静态演示中对非静态方法GETY()进行静态引用
把 int y 改成 static int y 并且public int getY() 修改成 publicstatic int getY()
(二)方法中参数传递的练习
1. 编写一个程序文件KY4_2.java。
2. 程序功能如下:有一个主方法main() 以及一个求平方和的方法int square(int x, int y)。square方法计算参数x 和y的平方和,并返回该平方和值。在主方法main中定义两个整型变量,并给它们赋一个初值,然后使用这两个变量作为实际参数来调用square方法,求出平方和,最后输出平方和。
3. 请将程序KY4_2.java的源代码写在实验报告中。
class A{
publicint square(int x, int y) {
returnx*x+y*y;
}
}
public class E {
public static void main(String[] args) {
Aa=new A();
a.square(5,5);
System.out.println("平方和="+a.square(5,5));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/a3ad7c0004d340667f108d471e0f13f4.png)
(三)类的继承性练习
2.编写两个程序文件KY4_3.java和KY4_4.java,实现类的继承。
3.KY4_3.java的代码如下:
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);
}
}
4.编译 KY4_3.java,产生类文件 KY4_3.class。注意:暂时不运行程序KY4_3.class。
5.编写一个程序文件KY4_4.java。程序功能如下:子类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的姓名,学号,学院和系。
6.编译并运行程序KY4_4.java。请将KY4_4的源程序以及运行结果写在实验报告中。
注意:父类 KY4_3 与子类 KY4_4要在同一文件夹(路径)内。
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);
}
}
public class KY4_4 extends KY4_3 {
String xy;
String xi;
void setdata(String a,String b) //该方法为姓名和学号赋初始值
{
xy =a;
xi = b;
}
public void print() //输出学院和系
{
System.out.println(xm+" "+xh+" "+xy+" "+xi);
}
publicstatic void main(String[] args) {
KY4_3f = new KY4_3();
f.setdata("帅零", 12321);
f.print();
KY4_4 b =new KY4_4();
b.setdata("郭娜", 12345);
b.setdata("经济管理学院", "信息管理系");
b.print();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/26b765cef8965e04949a124ee799907a.png)
思考题
说明类的继承和多态都有什么作用
继承就是子类继承父类,使子类具有父类的各种属性和方法,好处就是避免多余的代码出现,例如,项目中常常要用到的数据库的开启关闭,就可以单独写一个父类,其他类要用的话可以去继承
多态就是一个接口,使用不同的实例去执行不同的操作,好处就是增强程序的可扩展性及可维护性,使代码更简洁
四、心得体会:
虽然类 在C++学过 但是还不是经常使用导致忘记 对类的知识淡化了 现在JAVA学习起类来 感觉就是在复习 感觉不同的是 java static 这个关键字比较常用在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的