《Java语言程序设计》
上机实验报告(6)
实验名称: Java面向对象编程 (3)
班 级: 软件101
姓 名: 许 小 军
学 号: 110029025
上机时间:
指导教师: 王 华
实验六 Java面向对象编程 (3)
实验【目的】
1 理解构造函数的继承与重载。
2 抽象类和接口的使用。
3 包的定义与使用。
4 综合运用所学知识编写程序。
实验内容:
1.构造函数的继承与重载。
(1) 首先预测下列程序的运行结果,然后编译、执行以验证你的预测:
public class JLab0503{
public static void main(String args[]){
System.out.println("创建父类对象:");
SuperClass sc0 = new SuperClass();
System.out.println("\n创建第一个子类对象:");
SubClass sc1 = new SubClass();
System.out.println("\n创建第二个子类对象:");
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 {
public static void main(String args[]) {
System.out.println("创建父类对象:");
SuperClass sc0 = new SuperClass();
System.out.println("\n创建第一个子类对象:");
SubClass sc1 = new SubClass();
}
}
class SuperClass {
SuperClass() {
System.out.println("父类的构造函数");
}
}
class SubClass extends SuperClass {
}
运行结果:
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) {
name = n;
}
public String getName() {
return name;
}
public String toString() {
return "My pet " + name;
}
abstract String move();
abstract String speak();
}
class Cat extends Pet {
public Cat(String n) {
super(n);
}
String move() {
return "run";
}
String speak() {
return "miao,miao";
}
}
public class JLab0504A {
public static void main(String[] args) {
Cat myCat = new Cat("Kitty");
System.out.String() + "\n" + "Speak: " +
myCat.speak() +"\n" + ve() + " " +
Name() + "\n");
}
}
运行结果:
(2) 如果将Pet定义为接口,即所有相应方法全部为抽象方法,则Cat类该如何改动?试改写相关代码,并验证你的结果。
代码: package xuxiaojun;
interface Pet1 {
final String name = " Hello Kitty";
public abstract String getName();
public abstract String move();
public abstract String speak();
public abstract String toString();
}
class Cat1 implements Pet1{
public String getName(){
return name;
}
public String move(){
return "run";
}
public String speak(){
return "miao,miao";
}
public String toString(){
return "My pet" + name;
}
}
public class JLab0504A2 {
public static void main(String[] args) {
Cat1 myCat = new Cat1();
System.out.String() + "\n" + "Speak: "java程序设计基础视频 +
myCat.speak() +"\n" + ve() + " " +
Name() + "\n");
}
}
运行结果:
3.包的定义和使用。
A.(1)在C:\javalab目录下新建目录mypg;使用记事本程序编辑下列程序并将其保C:\jav
alab\mypg\MyPackage.java
package mypg;
public class MyPackage {
public MyPackage() {
System.out.println("create MyPackage object");
}
}
(2)编辑下列代码,并将其保存为C:\javalab\JLab0505.java
public class JLab0505 {
public static void main(String[] args) {
MyPackage mpg = new MyPackage();
}
}
(3) 分别编译上述两个java源程序,并执行JLab0505。观察相应结果。
(4)试将C:\javalab\mypg\MyPackage.class文件移动(剪切、粘贴)到C:\javalab\目录下。再次运行JLab0505,观察结果并思考原因。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论