- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA面向对象编程思想(二)卓广平博士.ppt
Sofa.java //在继承类的同时,实现多个接口 interface Sittable { void sit(); } interface Lie { void sleep(); } interface HealthCare { void massage(); } class Chair implements Sittable { public void sit(){}; } class Sofa extends Chair implements Lie, HealthCare { public void sleep(){}; public void massage(){}; } 内部类 在一个类中定义另外一个类,这个被定义的类就叫做内部类或内置类 (inner class) 。 看示例,探思想,并回答编译后生成的字节码文件: 内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。 当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,使得内部类对象可以随意的访问外部类中所有的成员。 思考一下这3个程序的运行结果。 class Outer{ private int index=100; void print() { Inner i=new Inner(); i.print(); } class Inner{ void print(){ System.out.println(index); } } } class Test{ public static void main(String[] args){ Outer o=new Outer(); o.print(); } } o this i main o.print i.print this … 栈内存 堆内存 Outer类对象 Inner类对象 Outer.this 还能写成Outer.Inner inner=outer.new Inner( ); 注意:此时,输入Inner inner=new Inner( );是错误的 内部类 在方法中、条件语句中或语句块中也可定义内部类,但要注意其可使用的范围。如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明“final”。 内部类可以声明为private或protected;还可以声明为abstract或final,也可派生子类。 内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法; 非static的内部类中的成员及方法不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。 内部类 我们为什么使用内部类 1、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。 2、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。 3、内部类的更多用法。 异常类的层次结构 异常处理 打开一个不存在的文件、网络连接中断、数组下标越界、正在加载的类文件丢失等都会引发异常。 Java中的异常类定义了程序中遇到的轻微的错误条件。 Java中的错误类定义了程序中不能恢复的严重错误条件。如内存溢出、类文件格式错误等。这一类错误由Java运行系统处理,不需要我们去处理。 异常处理 Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 try/catch/finally语句。 思考一下输出结果是什么? 没有这段代码可以吗? 异常处理 对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。 如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常(注:构造方法除外)。 我们可以在方法声明时,声明一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用于abstract base class和interface中。 Java编程规范 package的命名 package 的名字由全部小写的字
文档评论(0)