5月11号 周一 面向对象高级(下)

来源:互联网 发布:通达信炒股软件 编辑:程序博客网 时间:2024/06/05 17:20
1.
接口的使用:将方法名称暴露给用户;
接口对象的实例:通过对象的多态性,由子类为接口对象实例化;
抽象类与接口的相同点:都必须由通过子类进行实例化;
开发上讲:优先使用接口,因为接口允许多继承;
接口中都是抽象方法,子类必须覆写接口中的全部抽象方法,如果子类不希望全部覆写呢?解决方法:接口-》抽象类-》子类;即
接口的适配器adapter设计模式
interface A
{
 public void fun1() ;
 public void fun2() ;
 public void fun3() ;
}
abstract class B implements A
{
 public void fun1()
 {}
 public void fun2()
 {}
 public void fun3()
 {}
}
class C extends B
{
 public void fun1()
 {
  System.out.println("HELLO MLDN ...") ;
 }
}

接口的工厂设计模式(简单工厂)
interface USB
{
 // 开始工作
 public void start() ;
 // 停止工作
 public void stop() ;
}
class Mp3 implements USB
{
 public void start()
 {
  System.out.println("Mp3开始工作了。。。") ;
 }
 public void stop()
 {
  System.out.println("Mp3停止工作了。。。") ;
 }
}
class Factory
{
 public static USB getUSBInstance()
 {
  return new Mp3() ;
 }
}
public class OODemo07
{
 public static void main(String args[])
 {
  USB u = Factory.getUSBInstance() ;
  u.start() ;
  u.stop() ;
 }
}
2.
所有类都必须继承自Object类,Object类可以接收任何类的对象,注意toString()和 equals()方法的覆写。
部类确实可以节省代码,但是造成类的结构混乱;内部类也会产生.class文件;内部类可以在任何位置定义,例如在方法中定义,在方法中定义的内部类如果要
访问方法中的变量,则变量前必须加final,但是这个final并不表示常量。
匿名内部类,是在抽象类和接口的基础上发展起来的,匿名内部类只使用一次,。
3.包:文件夹,里面存放着类。
定义包之后就相当于包与类同时使用,包名.类名;定义包的类如果要被外部访问,必须用public声明,包的访问,import
JDK中提供一个功能,可以根据定义的package自动创建相应的文件夹并在该文件夹内生成class文件:javac -d . name.java
一个包可以有多个子包:package cn.msdn.mldn
如果不同包中有重名类,则在实例化的时候需要明确指出是哪个包下的类,例如:cn.classA a = new cn.classA();
java.lang:包括了一些基本类及数据类型,系统自动导入
javac.awt:图形界面的GUI设计(重量级)
javax.swing:图形界面的GUI设计(轻量级)
java.applet:实现applet程序(没有main方法)
java.net:实现c/s程序
java.io:实现文件操作(IO)
java.util:工具包
开发中public protected private使用比较多

4.异常的捕获和处理
异常在JAVA中称为throwable
Error表示错误:JVM出错,程序无法运行
Exception表示异常:可以人为处理 
try中如果发生异常,会抛出异常类的实例化对象
try{}catch(Exception e){}finally{}finally:表示异常的统一出口,不论发生什么异常,都要执行;一般用于释放资源连接:JDBC,IO  
throws用于在方法的声明处使用,表示在此方法中不处理异常,而交给调用此方法处进行处理,例如public int div(int i,int j) throws Exception
throw表示人为抛出异常,一般要与if语句一起使用,而且一般与throws配合使用,也就是说被调用的方法本身不处理异常,只负责抛出异常
public int div(int i,int j) throws Exception
 {
  if(j==0)
  {
   throw new Exception("被除数不能为零") ;
  }
  return i / j ;
 }
          
原创粉丝点击