视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
电大Java语言实验报告二
2025-09-24 18:38:59 责编:小OO
文档
《Java语言与面向对象程序设计基础》课程

实验报告二

姓名:王**

学号:111100145****

实验题1

[实验要求]

●给以下程序添加输出语句,以显示各种参数值及其传递关系

●画出参数传递的内存图

[实验程序]

源文件: Ex2_1.java  

public class Ex2_1 {

    public static void main(String[] args) 

    {

        MyDate m1 = new MyDate(1, 9, 1966);

        MyDate m2 = m1.addDays(7);

        m2.print();

    }

}

源文件: MyDate.java  

public class MyDate {

    private int day = 1;

    private int month = 1;

    private int year = 2000;

    public void print(){

    System.out.println( day + "-" + month + "-" + year);

    }

    public MyDate(int day, int month, int year) {

        this.day = day;

        this.month = month;

        this.year = year;

    }

    public MyDate(MyDate date) {

        this.day = date.day;

        this.month = date.month;

        this.year = date.year;

    }

    public MyDate addDays(int date) {

        MyDate n= new MyDate(this);

        n.day = n.day + date;

        return n;

    }

}

[运行结果]

[实验结论与收获]

了解了什么是类、类基本格式,对象以及构造方法

实验题2

[实验要求]

●修改程序,使得在子类中可以对两个f分别进行赋值和显示操作

●记录调试过程、步骤、程序和运行结果

[实验程序]

源文件: Child.java

class Parent{

    public  int f;

    public void setF(int a){   f=a;    }

    public  int getF( ) {  return  f;  }

}

public class Child extends Parent{

    public  int f;

    public  double  d;

    public static void main(String [] args){

        Child  c = new Child();

        c.f=100;

        c.setF(30);

        System.out.println(" Parent: " + c.getF());

        System.out.println(" Child: " + c.f);

    }

}

[运行结果]

[实验结论与收获]

学会修改程序,分别对F进行赋值和显示操作

实验题3

[实验要求]

●完成程序,使用super创建重写的方法

●调试并记录结果

[实验程序]

源文件:Employee.java

public class Employee {

    public String name="zhang";

    public double salary=2000;

    public String getDetails() {

        return "   Name:" + name + "\\n" + "   Salary:" + salary;

    }

}

源文件:Manager.java

public class Manager extends Employee {

    public String department="Office";

    public String getDetails() {

        return super.getDetails() + "\\n" + "   Department: " + department;

    }

}

源文件:Ex2_3.java

public class Ex2_3{

    public static void main(String args[ ]) {

        Employee e = new Employee();

        Manager m = new Manager();

        System.out.println("Employee:"+"\\n" +e.getDetails());

        System.out.println("Manager:"+"\\n" +m.getDetails());

    }

}

[运行结果]

[实验结论与收获]

学会super的创建使用方法

实验题4

[实验要求]

●修改并完成程序

●说明程序错在哪里,如何修改

●调试并记录结果

[实验程序]

源文件: Ex2_4.java

class Parent {

    public void doSomething() { }

}

class Child extends Parent {

    public  void doSomething() { }

}

public class Ex2_4 {

    public static void main() {

        Parent p1 = new Parent();

        Parent p2 = new Child();

        p1.doSomething();

        p2.doSomething();

    }

}

[运行结果]

[实验结论与收获]

错误出在private void doSomething() { }修改正确的public  void doSomething() { }

调试语句public static void main(String args[]) {

实验题5

[实验要求]

●执行程序记录程序结果

[实验程序]

源文件:Ex2_5.java

class Count {

     public static int counter;

     static {

        counter = 100;

        System.out.println("in static block!");

     }

}

public class Ex2_5 {

    public static void main(String[] args) {

        System.out.println("counter = "+ Count.counter);

    }

}

[运行结果]

[实验结论与收获]

执行程序得到正确结果

实验题6

[实验要求]

●将程序1 Parent类和程序2 Child类存于同一包(目录)中,并调试程序,记录结果。

●将程序1 Parent类存于当前包的子包parent中,程序2 Child类存于当前包中,并调试程序,记录结果。

●比较以上两题结果的不同。

[实验程序]

不同包源文件:Child.java

import aaa.Parent;

public class Child extends Parent{

    private int c1 = 21;

    public  int c2 = 22;

    

    private void cm1(){

        System.out.println("in cm1() c1=" + c1);}

    public  void cm2(){

        System.out.println("in cm2() c2=" + c2);}

        

    public static void main(String args[]){

        int i; 

        Parent  p = new Parent();

        //i = p.f1;     p.fm1();     i = p.f2;   i = p.f3;       p.fm2();     p.fm3();        

        i = p.f4;

        p.fm4();

        

        Child  c = new Child();

        //i = c.f1;      c.fm1();     i = c.f2;      c.fm2();      

        i = c.f3;  //protected保护类型的可以使用

        i = c.f4;

        c.fm3();  //protected保护类型的可以使用

        c.fm4();

        i = c.c1;     i = c.c2;

        c.cm1();     c.cm2(); 

    }

}

不同包源文件:Parent.java

package aaa;

public class Parent{

    private int f1 = 1;

    int f2 = 2;

    protected  int f3 = 3;

    public  int f4 = 4;

    

    private void fm1() {

        System.out.println("in fm1() f1=" + f1);}

    void fm2() {

        System.out.println("in fm2() f2=" + f2);}

    protected  void fm3() {

        System.out.println("in fm3() f3=" + f3);}

    public void fm4() {

        System.out.println("in fm4() f4=" + f4);}

}

同一包源文件:Child.java

public class Child extends Parent{

    private int c1 = 21;

    public  int c2 = 22;

    

    private void cm1(){

        System.out.println("in cm1() c1=" + c1);}

    public  void cm2(){

        System.out.println("in cm2() c2=" + c2);}

        

    public static void main(String args[]){

        int i; 

        Parent  p = new Parent();

        //i = p.f1;     p.fm1();     i = c.f1;      c.fm1();     

        i = p.f2;      i = p.f3;      i = p.f4;

        p.fm2();      p.fm3();     p.fm4();

        

        Child  c = new Child();

        i = c.f2;      i = c.f3;      i = c.f4;

        c.fm2();      c.fm3();     c.fm4();

        i = c.c1;     i = c.c2;

        c.cm1();     c.cm2(); 

    }

}

同一包源文件:Parent.java

public class Child extends Parent{

    private int c1 = 21;

    public  int c2 = 22;

    

    private void cm1(){

        System.out.println("in cm1() c1=" + c1);}

    public  void cm2(){

        System.out.println("in cm2() c2=" + c2);}

        

    public static void main(String args[]){

        int i; 

        Parent  p = new Parent();

        //i = p.f1;     p.fm1();     i = c.f1;      c.fm1();     

        i = p.f2;      i = p.f3;      i = p.f4;

        p.fm2();      p.fm3();     p.fm4();

        

        Child  c = new Child();

        i = c.f2;      i = c.f3;      i = c.f4;

        c.fm2();      c.fm3();     c.fm4();

        i = c.c1;     i = c.c2;

        c.cm1();     c.cm2(); 

    }

}

[实验程序2运行结果]

不同包

同一包

[实验结论与收获]

通过运行结果可以看出:

1、不管是否在同一包中,子类永远不能访问父类的private方法。

2、同一包中,父类与子类都可以访问default方法、protected方法及public方法

3、在不同包中创建的父类对象,不能访问父类的default方法、protected方法、private方法

4、在不同包中创建的子类对象,通过继承,可以访问父类中的protected方法。

掌握了不同包之间,各种方法的访问权限。下载本文

显示全文
专题