黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下2

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类的子类,throwtry…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语言的核心类,如StringMathIntegerSystemThread,提供常用功能。

     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);

       }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值