java面向对象程序设计基础知识总结

发布时间 : 星期日 文章java面向对象程序设计基础知识总结更新完毕开始阅读

接口与抽象类的区别:

接口中不能有非抽象的方法,但抽象类中可以有 一个类能实现多个接口,但只能有一个父类

接口与继承无关,所以无关的类可以实现同一个接口。 接口的实现:必须在类的定义时用关键字implements来声明

一个类声明实现某个接口后必须实现该接口的全部方法(包括该接口的所有父类的方法),被实现的方法和接口定义的方法有完全一样的方法名、返回值和形参表。

被实现的方法的访问控制符必须显式地使用public修饰,因为接口的方法都是public的。

41、适配器:当我们只需要使用某个接口中的少部分方法时,可以继承与之相对应的抽象类(抽象类不用实现所有的方法??)。java类库为所有的接口都提供了与之相对应的抽象类,我们称之为适配器。???42、例外:java允许我们声明抛出一个并没有发生的例外,可将其作为一个“占位符”来理解。

A、java提供了一个名为Throwable的类,所有的例外都必须是它或它子类的实例。Throwable有两个子类:Error和Exception,其中Error代表编译期和系统错误,我们一般不用特意捕获它们。Exception是可以从任何标准Java库的类方法中招聘的基本例外类,它们亦可以从我们自己的方法或者在运行期偶发事件中抛出。java定义的例外类都是Exception的子类。-

B、catch的括号内定义的对象名必须是try块中可能抛出的例外类的同

一个类或父类、甚至祖先类。因此说用catch(Exception e)能捕获所有例外就不奇怪了。

C、异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。

D、 Error和RuntimeException及其子类成为未检查异常 ????(unchecked),其它异常成为已检查异常(checked)

E、例外在继承关系中的特殊性:子类方法只能抛出被父类方法所能抛出的例外所属的例外类或它的衍生类,如果父类方法未定义成抛出例外,那么子类覆盖方法也不能抛出例外,如果父类方法声明抛出例外,子类方法可以不声明抛出例外。但是,父类的构造函数如果声明抛出例外,则子类的构造函数也必须声明抛出,子类也可以抛出根本不存在的例外。

43、RuntimeException介绍

1)、NullPointerException(值为空):见的最多了,其实很简单,一般都是在null对象上调用方法了。 String s=null;

boolean eq=s.equals(\ 这里你看的非常明白了,为什么一到程序中就晕呢? public int getNumber(String str){ if(str.equals(\ else if(str.equals(\

}

这个方法就有可能抛出NullPointerException,我建议你主动抛出异常,因为代码一多,你可能又晕了。 public int getNumber(String str){

if(str==null)

{throw new NullPointerException(\参数不能为空\ //你是否觉得明白多了 if(str.equals(\

else if(str.equals(\ }

2)、NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i= Integer.parseInt(\3)、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];

4)、StringIndexOutOfBoundsException:字符串越界。比如 String s=\

5)、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;

6)、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。 7)、ArithmeticException:算术错误,典型的就是0作为除数的时候。

8)、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

44、Java基本类库介绍:

? Class类:它是一个特殊的类,它的对象将伴随每个类,当一个类X被编译后,就有一个特殊的对象(class对象)产生,它隐藏在X.class文件中,Class对象是由编译系统自动生成的。

? Class.forName(String className),这个方法是静态方法,所以用Class直接调用,方法的返回值是形参指示的类的Class对象。 ? 类的加载都是在对象创建的时候进行。 45、String与StringBuffer

String 类用于处理那些值不会发生改变的字符串;而StringBuffer(变长字符串)类用于那些可能发生变化的字符串的处理。

联系合同范文客服:xxxxx#qq.com(#替换为@)