JAVA知识点梳理第二部分——接口、内部类、异常等等

来源:互联网 发布:gta5ol捏脸美女数据 编辑:程序博客网 时间:2024/06/05 05:03

JAVA整理知识点传送门:
JAVA知识点拉理第一部分——常规知识
JAVA知识点梳理第二部分——接口、内部类、异常等等
JAVA知识点梳理第三部分——图形用户界面GUI部分
JAVA知识点梳理第四部分——Swing控件
JAVA知识点梳理第五部分——JAVA数据流(文件)
JAVA知识点梳理第六部分——线程
JAVA知识点梳理第七部分——网络

类成员

  • 类成员包括类变量以及类方法,他们不依赖与特定的对象的内容。当实例化对象的时候,系统会为每个实例对象分配具体的内存空间,并且类成员是相互独立的。*

  • 类变量——唯一为类中所有对象共享的变量

在程序设计中,如果遇到需要将类成员变量被多个实例共享,比如纪录实例创建的个数的时候。可以使用static关键字,此时,系统会给这个变量分配独立于每个实例之外的系统空间。

  • 类方法

与类变量相似,如果需要用到尚未创建一个对象实例就去引用程序代码,那么加上static关键字就可以实现。

特别注意:

1、由于静态方法可以在没有定义它从属的类的对象的情况下加以调用,故不存在this值。

2、静态方法不能被重写。


关键字final

java中的final关键字可以用来修饰一个类,也可以用来修饰类中的成员变量以及成员方法。用这个关键字修改的类或类的成员变量都是不可以改变的。

如果一个类被定义为final,那么这个类不能被继承。如果一个方法被修饰为final,那么这个方法不能被重写。

如果一个变量被final修饰,那么这个变量将不能指向其他变量,但是它所指对象的取值是可以改变的。


抽象类

定义了方法但是还没有实现的类成为抽象类

在java中通过关键字abstract把一个类定义为抽象类,每一个为被定义具体实现的方法也应该标记为abstract,这样的方法称之为抽象方法。

一个抽象类可以包含非抽象方法和成员变量。包含抽象方法的类一定是抽象类,但是抽象类中的方法不一定都是抽象方法。


接口 interface

接口是抽象类功能的另一种方法,可以想象成为一个纯的抽象类。
它允许创建者规定一个类的基本形式,包括方法名、自变量列表以及返回类型,但不规定方法主体。因此在接口中的所有的方法都是抽象方法,都没有方法体。

接口的定义方法:

[接口修饰符] interface 接口名称 [extends 父类名]{
//方法原型以及静态常量
}

接口和一般类一样,本身也具有数据成员和方法,但数据成员一定要赋值,且值不能修改。

java中可以通过implements后面声明多个接口名来实现多个接口,也就是一个类可以实现多个接口。


内部类 Inner Class

内部类的属性:

1、内部类只能在定义的范围内使用,内部类名必须区别于外部类。

2、内部类可以使用外部类的类变量和实例变量,也可以使用外部类的局部变量。

3、内部类可以定义为abstract类型。

4、内部类也可以是一个接口,这个接口需要用到另一个内部类来实现。

5、内部类可以被定义为private和protected类型。

6、被定义为static型的内部类将自动转换为顶层类,他们不能使用局部范围内的其他数据和变量。

7、内部类不能定义static型成员,只有顶层类才能定义static型成员。


包装类

包装(wrapper)类表示一种特殊的基本类型。


JAVA语言中的异常

java语言吧程序运行中可能遇到的错误分为两类:一类是非致命的,通过修改后还可以继续运行。这种错误叫异常(Exception),另一类是致命的,就是错误。

在一个方法的运行中,如果发生了异常,称程序产生了一个异常事件,相应的生成了异常对象。该对象可能由正在运行的方法生成,也有可能由JVM生成。这个对象中包含了异常必要的详细信息,包括所发生的异常事件的类型以及异常发生时程序的运行状态。生成的异常对象传递给java运行时系统,运行时系统就找相应的代码处理异常

java运行时系统从生成对象的代码块就进行回溯,沿方法的调用栈逐层回溯,寻找相应的处理代码,知道找道包含相应异常处理的方法为止,并把异常交给该方法处理,这一过程叫做捕获(catch)

异常分类

  • 受检异常

受检异常程序执行期间发生的严重事件的后果。

java类库中的下列类表示受检异常:ClassNotFoundException、FileNotFoundException、IOException、NoSuchMethodException、WriteAbortedException

  • 运行时异常

运行时异常(runtime exception)通常是程序中逻辑错误的结果。

java类库中的下列类表示运行时异常:ArithmeticException、ArrayIndexOutOfBoundsException、ClassCastException、EmptyStackException、IllegalArgumentException、IndexOutOfBoundsException、NoSuchElementException、NullPointerException、

  • 错误

错误(error)是标准被Error或其后代的一个对象,这样的类就称为错误类。

受检异常、运行时异常、错误的类共同称为异常类(ExceptionClass)、它们都是标准类Throwable的后代。

异常处理

对于可能引发受检异常的方法有两种选择:在方法内处理异常,或者是告诉方法的调用者处理

  • try——catch块

处理异常的代码含有两段,第一段try块中含有可能抛出异常的语句,第二段含有一个或多个catch数据块。

如果没有发生异常,那么会执行完try语句块中的内容,然后执行catch语句块之后的内容。如果有异常,那么会终止try语句块中的内容,跳到catch语句块中进行执行。

catch语句块捕捉的异常的顺序: 将多个具体异常放在祖先类之前。尽可能的捕获具体的异常。

  • 抛出异常
    在JAVA中,处理异常的方式有两种,一种是使用try——catch语句块。捕获到相应的异常,然后进行处理。第二种方式就是将异常抛出到调用方法之中。在不能使用合理的方式解决不正常或意外事件的情形下,才抛出异常。

如果一个方法类含有一个抛出异常的throw语句,则在方法头需要添加一个throw语句。而不是在方法体中去捕获具体的异常。

  • 创建自己的异常

注:所有的自己创建的异常必须继承自Exception。


JAVA的高级特性

  • 泛型

在设计类和接口的时候,需要说明相关的数据类型。JAVA允许在类和接口之中,用一个占位符代替实际的类的类型。这个技术称为泛型。

class Test<T>  implements Testable<T>

在传入值的时候,引用必须要指明类型
Test test=new Test(1, 3);

在类Test的定义中,T是泛型参数,跟在类头的标识符之后,在构造方法之后可以不用写。

  • 迭代器

迭代器是一个能够遍历数据集合的对象。在遍历的过程中,可以查看数据项、修改数据项、添加以及删除数据项。

  • 克隆

如果类中的数据成员是私有的,一般会在类中提供公有的访问方法。其他类可以使用这些方法改变类的对象的相关属性。

有赋值对象的类的对象称为可变对象,没有赋值方法的类称为不可变对象。

在java中可以复制对象,称为克隆。通常我们仅克隆可变对象

类Object含有一个保护方法clone()。他返回对象的复制。

protected Object clone() throw CloneNotSupportedException

在任意的方法中都可以调用super.clone()

对于克隆(clone),java有一些限制

1、被克隆的类必须要自己实现Cloneable接口,以指示Object.clone()方法可以合法的对该类的实例进行按字段复制。Cloneable实际上是一个标识接口,没有任何接口方法。

2、实现Cloneable接口的类应该使用公共方法重写Object.clone()(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。及时clone方法是反射性调用的,也无法保证它获得成功。

3、在java中Object的调用是通过super.clone()。

对象是java运行时产生的额,驻留在计算机内存中!

在类中直接重写clone()方法,然后调用super.clone();public Object clone() throws CloneNotSupportedException {    return super.clone();}

使用注意:

1、重写clone方法的时候要将它声明为公有的。

2、要调用父类的方法:super.clone()

3、注意要抛出CloneNotSupportedException()异常。


阅读全文
1 0
原创粉丝点击