面向对象程序设计(gxw- java part)面向对象程序设计(gxw-2 java part)面向对象程序设计(gxw-2 java part)面向对象程序设计(gxw-2 java part).ppt

面向对象程序设计(gxw- java part)面向对象程序设计(gxw-2 java part)面向对象程序设计(gxw-2 java part)面向对象程序设计(gxw-2 java part).ppt

  1. 1、本文档共265页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 子类异常对象的类型范围 class RE extends Exception { int x=0; } class A { void k( ) throws RE { } void h( ) throws Exception { } } class B extends A{//以下函数k使用RE的父类Exception表示扩大了异常对象的类型范围 //函数k可抛出Exception及其子类的对象引用,因此,扩大了异常对象的类型范围 void k( ) throws Exception { throw new Exception( ); } //错:扩大了异常对象类型范围 void h( ) throws RE { } //未扩大异常对象的类型范围 } public class Main { public static void main(String[] args) { A a=new B( ); try{ a.k( ); } catch(RE re){// a.k( )抛出的异常对象类型为Exception,传给re被当作RE类型的对象处理 System.out.println(re.x); //实际上,抛出的类型为Exception的异常对象中没有实例变量x } } } * 异常catch的顺序 异常的catch顺序同C++。 不同的是java没有catch(…)的形式。但是,可以使用catch(Object ob)代替,因为Object是所有可实例化类的父类。 需要注意的是C++还可以抛出不是实例化对象的异常,例如,抛出int类型的异常,而java的所有异常必须是对象。 Java的finally同C++的__finally,该部分的语句无论是否发生异常都会执行。 异常的处理极其耗费资源,不要动不动就使用异常。 * 第18章 线程 * 程序、进程和线程 * 程序、进程和线程 程序 进程1 进程2 int i int i 线程1 线程2 线程1 线程2 不同进程的内存空间是隔离的, 因此进程1中的变量i与进程2中 的变量i属于不同的内存空间。 进程切换和进程间通信开销大。 进程间交换数据只能通过: 共享内存、管道、消息队列、 Socket通信等机制 但是一个进程里的线程切换开销 小的多,因为它们位于同一内存 空间里。线程1、2线程位于同一 内存空间使得线程之间数据交换 非常容易。变量i可以被线程1、2 访问(但要考虑同步)。 因此线程又叫轻量级进程 * 程序、进程和线程 当一个进程被创建,自动地创建了一个主线程。因此, 一个进程至少有一个主线程。 线程:程序中完成一个任务的有始有终的执行流,都有 一个执行的起点,经过一系列指令后到达终点。 多CPU上运行的多线程 多线程共享一个CPU 现代OS都将线程作为最小调度单位,进程作为资源分配的最小单位。 分配给进程的资源(如文件,外设)可以被进程里的线程使用 * 线程的作用 一个进程的多个线程可以并发运行 一个典型的GUI程序分为 GUI线程:处理消息循环,如鼠标消息、键盘消息 Worker线程:后台的数据处理工作,比如打印文件,大数据量的运算 * 多线程的运行 JAVA对线程的支持是由java.lang.Thread类支持 有两种方法可以实现同一个或多个线程的运行run:(1) 定义Thread类的子类并覆盖run方法;(2) 实现接口Runnable的run方法。 * 定义Thread类的子类并覆盖run 继承Thread类 覆盖public void run()方法 public void run()方法定义了线程的运行行为,或者说实现了线程的运行行为 创建线程对象,调用线程对象的start方法启动线程 * 例1 通过Thread来创建和启动线程 程序创建并运行二个线程 第一个线程打印100次字母a 第二个线程打印100次字母b * 定义Thread类的子类并覆盖run class PrintChar extends Thread //继承Thread类 { private char charToPrint; //要打印的字符 private int times; //打印的次数 public PrintChar(char c, int t){ charToPrint = c; times = t; } public void run() {//覆盖run方法,定义线程要完成的功能 for (int i=1; i times; i++) System.out.print(charToPr

您可能关注的文档

文档评论(0)

cxiongxchunj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档