《Java语言程序设计》 上机实验报告(6)
实验名称: Java面向对象编程 (3) 班 级: 软件101 姓 名: 许 小 军 学 号: 110029025 上机时间:
指导教师: 王 华
实验六 Java面向对象编程 (3)
实验【目的】
① 理解构造函数的继承与重载。 ② 抽象类和接口的使用。 ③ 包的定义与使用。
④ 综合运用所学知识编写程序。
实验内容:
1.构造函数的继承与重载。
(1) 首先预测下列程序的运行结果,然后编译、执行以验证你的预测:
public class JLab0503{
public static void main(String args[]){
System.out.println(\创建父类对象:\
SuperClass sc0 = new SuperClass(); System.out.println(\创建第一个子类对象:\ SubClass sc1 = new SubClass();
System.out.println(\创建第二个子类对象:\
SubClass sc2 = new SubClass(1);
} }
class SuperClass{ SuperClass( ){
System.out.println(\父类的构造函数\
}
}
class SubClass extends SuperClass{ SubClass( ){
System.out.println(\子类的第一个构造函数\
}
SubClass(int i){ System.out.println(\子类的第二个构造函数\ }
}
运行结果:
(2) 去掉SubClass的所有构造函数,然后将JLab0503类中main方法的最后两
行语句删除。预测修改后程序的运行结果,并进行验证。 代码: package xuxiaojun;
public class JLab0503 { }
class SuperClass { }
class SubClass extends SuperClass { }
SuperClass() { }
System.out.println(\父类的构造函数\); public static void main(String args[]) { }
System.out.println(\创建父类对象:\); SuperClass sc0 = new SuperClass();
System.out.println(\创建第一个子类对象:\); SubClass sc1 = new SubClass();
运行结果:
2.抽象类与接口。
(1)试改写实验指导手册(5)中第3题的Pet类,其中move与speak方法定义为抽象方法。定义一个Pet类的子类Cat类。在Cat类中实现move和Speak方法。其中move方法返回值为“run”,speak方法返回值为“miao miao”。
(2)编写含有主方法的公共类JLab0504A,在其主方法中创建一个名为myCat的Cat的实例。并依照实验指导手册(5)中的类JLab0501主方法中的相应格式输出结果。 代码: package xuxiaojun;
abstract class Pet {
protected String name; public Pet(String n) { }
public String getName() {
name = n;
}
}
return name;
public String toString() { }
abstract String move(); abstract String speak();
return \ + name;
class Cat extends Pet { }
public class JLab0504A { }
public static void main(String[] args) { }
Cat myCat = new Cat(\);
System.out.println(myCat.toString() + \ + \ +
myCat.speak() +\ + myCat.move() + \ + myCat.getName() + \);
public Cat(String n) { }
String move() { }
String speak() { }
return \; return \;
super(n);
运行结果:
(2) 如果将Pet定义为接口,即所有相应方法全部为抽象方法,则Cat类该
如何改动?试改写相关代码,并验证你的结果。 代码: package xuxiaojun;
interface Pet1 {
final String name = \; }
public abstract String getName(); public abstract String move(); public abstract String speak(); public abstract String toString();
class Cat1 implements Pet1{ }
public class JLab0504A2 { }
}
public String move(){ }
public String speak(){ } }
return \;
return \; return name;
public String getName(){
public String toString(){
return \ + name;
public static void main(String[] args) { }
Cat1 myCat = new Cat1();
System.out.println(myCat.toString() + \ + \ +
myCat.speak() +\ + myCat.move() + \ + myCat.getName() + \);
运行结果:
3.包的定义和使用。
A.(1)在C:\\javalab目录下新建目录mypg;使用记事本程序编辑下列程序并将其保C:\\javalab\\mypg\\MyPackage.java
package mypg;
public class MyPackage {
public MyPackage() {
System.out.println(\
}
}
(2)编辑下列代码,并将其保存为C:\\javalab\\JLab0505.java
public class JLab0505 {
public static void main(String[] args) {