9面向对象的多态性和接口技术的代码演练体会:
interface PCI
{
void start();
void stop();
}
class NetWorkCard implements PCI
{
public void start()
{
System.out.println("Send...");
}
public void stop()
{
System.out.println("stop...");
}
}
class SoundCard implements PCI //不能无implements PCI,不然无法反映两个类的关系;
{
public void start()
{
System.out.println("du..du");
}
public void stop()
{
System.out.println("sound stop");
}
}
class MainBoard
{
public void usePCICard(PCI p)
{
p.start();
p.stop();
}
}
class Assembler
{
public static void main(String [] args) //将各个网卡组织到一块;各个网卡的功能独立;
{
MainBoard mb = new MainBoard();
NetWorkCard nc = new NetWorkCard();
SoundCard sc = new SoundCard();
mb.usePCICard(nc); //前面的程序调用后面的程序,即插上的卡立刻就能用;
mb.usePCICard(sc);
}
}
10匿名内部类
关键代码
mb.usePCICard(new PCI() //产生匿名的类之类,临时的只用一次的类;
{
public void start()
{
System.out.println("test start");
}
public void stop()
{
System.out.println("test stop");
}
});
11异常
11.1异常定义了程序中遇到的非致命的错误, 而不是编译时的语法错误,如程序要打开一个不存的文件、网络连接中断、操作数越界、装载一个不存在的类等。
11.2throws关键字,用于说明程序可能会有异常错误,必须在子类或者更高一级的父类中有处理;
11.2对多个异常作出处理时,先在throw后面增加上新异常处理函数名,对应在try,catch语句中增加相应的调用方法,可接多个catch语句做分别处理;
11.3注意自定义异常也必须作为exception类的子类,throw,try…catch语句也可来实现程序的跳转
11.4一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类。
11.5如果父类扔出多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
12包
12.1package语句及应用:例如:package org.it315;声明是org/it315目录下的相关类,可用“javac -d . Lessen44.java命令创建,先查目录再找类
12.2package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。
12.3import语句及应用:用于简化对包名的说明,例如import org.it315.*;就是说明本文件下的类都是目录org/it315下的。
12.4jdk中常用的包
– java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
– java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
– java.applet----包含applet运行所需的一些类。
– java.net----包含执行与网络相关的操作的类。
– java.io----包含能提供多种输入/输出功能的类。
– java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
演示的代码备份4:
//Lessen43.java,接口和面向对象的多态性
interface PCI
{
void start();
void stop();
}
class NetWorkCard implements PCI
{
public void start()
{
System.out.println("Send...");
}
public void stop()
{
System.out.println("stop...");
}
}
class SoundCard implements PCI //不能无implements PCI,不然无法反映两个类的关系;
{
public void start()
{
System.out.println("du..du");
}
public void stop()
{
System.out.println("sound stop");
}
}
class MainBoard
{
public void usePCICard(PCI p)
{
p.start();
p.stop();
}
}
class Assembler
{
public static void main(String [] args) //将各个网卡组织到一块;
{
MainBoard mb = new MainBoard();
NetWorkCard nc = new NetWorkCard();
SoundCard sc = new SoundCard();
mb.usePCICard(nc);
mb.usePCICard(sc);
}
}
演示的代码备份5
//Lessen44.java,异常情况处理和包概念的演示
package org.it315; //声明是org/it315目录下的相关类,可用“javac -d . Lessen44.java命令创建,先查目录再找类
//包名不是有文件夹指定的,而是由程序中package命令指定的;
//import java.awt.*;
//import java.awt.event.*;
//import java.sql.*;
//import java.util.*;
//java.util.Data
//import java.lang.*;
class TestException
{
public static void main(String [] args) throws Exception //自己不想处理时候处理异常的时候,向上报告,肯定不会有异常的时候可以用;
{
//new Test().devide(3,0);
try //对可能发生的异常测试,生产异常的对象传递给catch中的对象,调用出异常中的信息
{
new Test().devide(3,-1); //同包内通常不用加包名的
//return ;
}
catch(ArithmeticException ex)
{
System.out.println("program is running into ArithMetic");
ex.printStackTrace();
}
catch(DevideByMinusException ex) //数据小于0时候进入
{
System.out.println("program is running into DevideByMinusException");
ex.printStackTrace();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());//省略此处代码会给以后排除错误造成潜在麻烦,查不出错误在哪里;
}
finally //除非在try catch语句中使用了 System.exit(0),才会不执行;
{
System.out.println("finally");
}
System.out.println("program is running here!");//try 里面有return语句时候不执行;
}
}
演示的代码备份5的补充:
//Test.java
package org.it315.example;
public class Test
{
public int devide(int x,int y) throws ArithmeticException,org.it315.DevideByMinusException
{
if( y < 0 )
throw new org.it315.DevideByMinusException("deveisor is"+y);
int result = x/y;
return result;
}
}
// DevideByMinusException.java
package org.it315;
public class DevideByMinusException extends Exception //子类扔出的异常只能比父类少,不能多,不能超;
{
public DevideByMinusException(String msg)
{
super(msg);
}
}