5月11号 周一 面向对象高级(下)
2009-05-11 20:27
120 查看
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 ;
}
接口的使用:将方法名称暴露给用户;
接口对象的实例:通过对象的多态性,由子类为接口对象实例化;
抽象类与接口的相同点:都必须由通过子类进行实例化;
开发上讲:优先使用接口,因为接口允许多继承;
接口中都是抽象方法,子类必须覆写接口中的全部抽象方法,如果子类不希望全部覆写呢?解决方法:接口-》抽象类-》子类;即
接口的适配器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 ;
}
相关文章推荐
- 面向对象高级编程(5)-使用元类
- 面向对象高级特性--类的继承、接口(概念类)
- 廖雪峰Python教程1轮还没学明白的(3) -- 面向对象高级编程 -- 定制类 -- __getattr__之链式调用
- 【javascript高级程序设计】读书摘录3 第六章、面向对象
- Geekband C++面向对象高级编程(上) 第一周笔记 暗影行者
- python Class:面向对象高级编程 多重继承
- python Class:面向对象高级编程 __call__& callable()
- 04--面向对象高级部门随记(下--02)
- PHP面向对象的程序设计继承--php高级最详细教程
- C++面向对象高级开发课程(第一周)
- JAVA面向对象高级特性之继承(1)常见问题解答
- JS高级 - 面向对象1(this,Object ,工厂方式,new )
- 面向对象---高级
- python面向对象高级编程
- Python面向对象高级编程
- Java面向对象高级--继承的进一步研究
- C++面向对象高级开发_极客班_第二节课笔记
- 面向对象高级编程—使用___slots__
- java面向对象高级分层实例_接口类
- 08面向对象高级特性一