Java程序设计精编教程第8章_内部类与异常类
时间:2025-04-20
时间:2025-04-20
java教辅
第8章 内部类与异常类
2010-8-1
java教辅
导读主要内容 内部类 匿名类 异常类 断言
2010-8-1
java教辅
§8.1 内部类 Java支持在一个类中声明另一个类 , 这样 支持在一个类中声明另一个类, 支持在一个类中声明另一个类 的类称作内部类, 的类称作内部类 , 而包含内部类的类成为内部 类的外部类。 类的外部类。
2010-8-1
java教辅
class RedCowForm { String formName; RedCow cow; //内部类声明对象 RedCowForm() { } RedCowForm(String s) { cow = new RedCow(150,112,5000); formName=s; } public void showCowMess() { cow.speak(); } class RedCow { //内部类的声明 String cowName="红牛"; int height,weight,price; RedCow(int h,int w,int p){ height=h; weight=w; price=p; } void speak() { System.out.println("偶是"+cowName+",身高:"+height+"cm 体重:"+weight+"kg,生活在"+formName); } } } public class Example8_1 { public static void main(String args[]) { RedCowForm form = new RedCowForm("红牛农场"); form.showCowMess(); } }
2010-8-1
java教辅
class Outer { int outer_i = 100; void test() { Inner in = new Inner(); in.display(); } class Inner { void display() { System.out.println("display: outer_i = " + outer_i); } } } class InnerClassDemo { public static void main(String args []) { Outer outer = new Outer(); outer.test(); } }2010-8-1 5
java教辅
内部类 嵌套类可以直接访问外部类的成员,包 括private成员,但是嵌套类的成员却不能 被外部类直接访问。 在内部类对象保存了一个对外部类对象 的引用,当内部类的成员方法中访问某 一变量时,如果在该方法和内部类中都 没有定义过这个变量,内部类中对this的 引用会被传递给那个外部类对象的引用。2010-8-1 6
java教辅
内部类如果函数的局部变量(函数的形参也是局部变量),内部类的成员变量,外部 类的成员变量重名,我们应该按下面的程序代码所使用的方式来明确指定 我们真正要访问的变量。 public class Outer { private int size; public class Inner { private int size; public void doStuff( int size) { size++; // 引用的是doStuff函数的形参 this.size++; //引用的是Inner类中的成员变量 Outer.this.size++; // 引用的Outer类中的成员变量 } } }2010-8-1 7
java教辅
内部类如何被外部引用class Outer { private int size=10; public class Inner { public void doStuff() { System.out.println(++size); } } } public class TestInner { public static void main( String[] args) { Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.doStuff(); } }2010-8-1 8
java教辅
内部类 嵌套类并非只能在类里定义,也可以在 几个程序块的范围之内定义内部类。例 如,在方法中,或甚至在for
循环体内部, 都可以定义嵌套类 。 在方法中定义的内部类只能访问方法中 的final类型的局部变量,用final定义的局 部变量相当于是一个常量,它的生命周 期超出方法运行的生命周期。2010-8-1 9
java教辅
class Outer { int outer_i=100; void test() { for (int i=0;i<5;i++) { class Inner //方法中定义的内部类 { void display() { System.out.println("display: outer_i="+outer_i);} } Inner inner=new Inner(); inner.display(); } } } class InnerClassDemo { public static void main(String args[]){ Outer outer=new Outer(); outer.test(); } }
2010-8-1
java教辅
§8.2 匿名类§8.2.1 和子类有关的匿名类 Java允许我们直接使用一个类的子类的类体创建 Java允许我们直接使用一个类的子类的类体创建 一个子类对象。 一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有 创建子类对象时, 类体,此类体被认为是一个子类去掉类声明后的类体, 类体 ,此类体被认为是一个子类去掉类声明后的类体 , 称作匿名类。 称作匿名类。 假设Bank是类,那么下列代码就是用Bank Bank是类 Bank的一个子 假设 Bank 是类 , 那么下列代码就是用 Bank 的一个子 类(匿名类)创建对象: 匿名类)创建对象:new Bank () { 匿名类的类体 };2010-8-1
例211
java教辅
§8.2.2 和接口有关的匿名类
假设Computable是一个接口 , 那么 , Java允 是一个接口, 那么, 假设 是一个接口 允 许直接用接口名和一个类体创建一个匿名对象, 许直接用接口名和一个类体创建一个匿名对象, 此类体被认为是实现了Computable接口的类去 此类体被认为是实现了 接口的类去 掉类声明后的类体,称作匿名类。 掉类声明后的类体,称作匿名类。 下列代码就是用实现了Computable接口的类 下列代码就是用实现了 接口的类 (匿名类)创建对象: 匿名类)创建对象:new Computable() { 实现接口的匿名类的类体 };
例3
2010-8-1
java教辅
§8.3 异常类 所谓异常就是程序运行时可能出现一些错误, 比如试图打开一个根本不存在的文件等,异常 处理将会改变程序的控制流程,让程序有机会 对错误作出处理。 异常对象可以调用如下方法得到或输出有关异 常的信息:– public String getMessage(); – public void printStackTrace(); – public String toString();2010-8-1 13
java教辅
public class TestException { public static voi …… 此处隐藏:2317字,全部文档内容请下载后查看。喜欢就下载吧 ……