北航远程教育《Java语言与面向对象设计》第三阶段导学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java语言与面向对象设计》第三阶段导学材料
第08章、内部类
(1)概念:定义在某一个类内部的类,称为内部类。
(2)优点:内部类可以作为外包类的成员使用;在内部类中可以访问外包类的所有成员;
public class outer //外部类定义
{
int x=1; int y=2;
inner inner_Obj = new inner(); //内部类作为外包类的成员void printStr()
{
System.out.println("外部类方法");
}
class inner //内部类定义
{
int x=3;
public void printData(int x)
{
int a=x; //形参
int b=this.x; //内部类变量
int c= y; //外部类变量
int d=outer.this.x; //外部类与内部类同名变量
System.out.println(a+" "+b+" "+c+" "+d);
printStr();//调用外部类方法
}
}
public static void main(String[] args)
{
outer o = new outer();
o.inner_Obj.printData(4);//通过外部类对象调用内部类方法
}
}
(3)外包类之外访问内部类
outer o = outer();
outer.inner v = o.new inner();
(4)特点:内部类可以使用public、protected、默认、private四种访问权限;可以被static修饰;
内部类可以继承外包类;
※内部类事件处理应用,请参考示例程序:内部类事件应用.java
※不使用内部类时,类之间变量传递的解决方法,请参考示例程序:类之间传递参数.java
第09章、 Applet
(1)什么是Applet
•是嵌入到网页中通过浏览器执行的JA V A小程序,没有main方法,是基于图形界面的;
•可以使用JDK的appletviewer来运行网页文件;
(2)Applet的定义和使用
•类的定义
import java.applet.*;
public class hellow extends Applet {
//主要是对父类方法的重写
}
•网页中的调用
<body bgcolor="000000">
<applet
code = "mypack.hellow.class"
width = "500"
height = "300"
>
</applet>
</body>
(3)Applet生命期四个阶段的主要事件
• void init() void start() void stop() void destroy()
(4)两个重要方法
• paint(Graphics g):在Applet中显示文字图形等信息,在其生命其中可被多次调用
• repaint():首先清除Applet界面,然后调用paint(Graphics g) 重新绘图界面(5)Applet的多媒体应用(示例:图形、音乐)
第10章、异常
(1)异常的概念:程序在运行时出现的任何不正常现象或错误被称为异常。
(例如:文件不存在、除零、数组越界、网络中断等)
(2)异常的处理语句try-catch-[finally]
try {
//可能出现异常的语句;
}
catch(Exception e)//catch可以有多个
{
//异常产生后的处理代码}
finally {
//有无异常均执行,用于异常后的清理工作,例如关闭文件
}
例如
try {
C = A / B; //如果B为0,则会发生除0错误
}
catch(Exception e)//异常产生后的处理代码
{
//获取异常相关信息
String str = e.getMessage();
JOptionPane.showMessageDialog(null,str);
//直接在屏幕上打印显示异常相关信息
e.printStackTrace();
//给B重新输入非0值,实施错误发生后的补救措施
B = in.nextInt();
C = A / B ;
}
finally {
//有无异常均执行,用于异常后的清理工作
}
(3)throws与throw
• throws:用于将被调用函数内部产生的异常抛给主调函数;如果某个函数中的代码有可能引发异常,可以使用try/catch块进行处理,这种处理方式成为“内部处理”;如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws;
返回值类型函数名( 参数列表 ) throws 异常类型
{
//函数体
}
•throw:在方法体内手工抛出异常(可以抛出系统定义异常,主要是用户自定义异常)
void setAge(int age) throws Exception
{
if (age < 0 || age > 100)
{
//创建一个异常实例,并将其手工抛出;throw一般在一个条件语句中,否则其后语句无法执行,
//而导致编译不通过
throw (new Exception("您输入的年龄无效"));
}
}
public static void main(String[] args)
{
…
try
{
x.setAge(age);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e.getMessage());
}
…
}
※使用throw抛出异常成为显性抛出,否则为隐形抛出;无论显性、隐性都必须在方法体后用throws声明抛出异常。
※方法覆盖【重写】时,不能一定不能抛出新的异常,或抛出的异常范围比原来的更广。
第11章、多线程
(1)线程与进程的概念;
一个进程在其执行过程中,可以产生多个线程,形成多个程序的执行流。
(2)创建线程的两种方法:①继承Thread类②实现Runnable接口;其共同点就是重写或实现run()方法,因为所有线程都是从run()开始运行;
【方法1】继承Thread类:
class thread1 extends Thread
{
public void run()
{ … }
}
thread1 t=new thread1(); //创建线程实例
t.start(); //启动线程
【方法2】实现Runnable接口:
class thread1 extends superclass implements Runnable
{
public void run()
{ … }
}
Thread t=new Thread( new thread1() ); //创建线程实例
t.start(); //启动线程
(3)线程的基本控制方法
• start():启动线程
• stop():终止线程
• sleep(int s):在线程内部调用使线程休眠一段时间后继续运行• isAlive:判断线程是否激活
• interrupt():唤醒一个正在sleep()、join()、wait()的线程
• suspend():暂停一个线程
• resume():恢复一个线程
• Thread.currentThread():获取当前线程实例。