JAVA实验报告-实验四
院(系) 计算机学院 专业 计算机科学与技术班级 计科2班
姓名 学号 同组人 无
实验室 S4305 组号 日期
课程 Java程序设计 指导教师 成绩
实验项目编号 8103200404 实验项目名称 内部类
实验目的
熟悉并掌握Java中匿名内部类和成员内部类的定义及使用。
实验环境
Windows XP 操作系统
Eclipse
实验原理
1.内部类的方法可以访问它所在的外部类中的所有域,包括私有型别的;2.对于同一个包中的其它类是隐藏的;3.匿名的内部类可以让我们很方便的定义事件响应(call back),这在GUI编程中很常见;
算法设计
【任务一】尝试在方法中编写一个匿名内部类,该内部类实现某一接口,接口中声明了有f1()方法和f2()方法(无参数,无返回值)。实现调用该匿名内部类实例的方法f1()和f2()。备注:方法f1()和方法f2()仅需在控制平台上输出一行提示代码。。
【任务二】编程实现一个成员内部类的定义。要求实现内部类向上转型为接口。参见书P206页【例11.10】
主要代码及说明
【任务一】
【任务二】
实验小结
通过本次上机,熟悉并掌握了Java中匿名内部类和成员内部类的定义及使用。Java程序中,如果要向内部类传参数,那么必须声明成Final类型。内部类是java类中高级用法,而匿名类在swing编程中尤为频繁,为今后Swing学习打下一定基础。
实验报告单
package innerclass;
interface Inter //定义接口
{
public abstract void f1(); //接口中声明无参数无返回值的f1()方法
public abstract void f2(); //接口中声明无参数无返回值的f2()方法
}
class InnerClassDemo1
{
public static void main(String[] args){
Test.function().f1(); //调用匿名内部类实例的方法f1()
Test.function().f2(); //调用匿名内部类实例的方法f2()
}
}
class Test
{
static Inter function() //定义 function()方法
{
return new Inter(){ //声明匿名内部类
//内部类实现接口中的f1()
public void f1(){
System.out.println("访问内部类中的f1方法...");
}
//内部类实现接口中的f2()
public void f2(){
System.out.println("访问内部类中的f2方法...");
}
};
}
}
package innerclass;
interface OutInterface { // 定义一个接口
public void f();
}
public class InnerClassDemo2 {
public static void main(String args[]) {
OuterClass out = new OuterClass(); // 实例化一个OuterClass对象
OutInterface outinter = out.doit("doit"); // 调用doit()方法,返回一个OutInterface接口
outinter.f(); // 调用f()方法
}
}
class OuterClass{
public OutInterface doit(final String x) { // doit()方法参数为final类型
class InnerClass implements OutInterface { /