instanceof 类型转换
instanceof这个在之前就已经说过了,这里只提供一份代码,仅供参考
要想使编译不报错,就要满足比较的类型和该类型有关系(继承),以上为例
- String类型和Object类型是继承关系,所以编译不报错,但是实例化的对象不属于String,所以结果为FALSE
至于类型转换上一节就提到过什么时候需要类型转换
- 和基本类型的转换差不多
static
对于static关键字应该不陌生,这里就写一下有关的用法还有表达
这个是属性及一些方法的定义及使用,静态的是随着类加载而加载,所以在静态方法里是无法直接调用非静态方法的,需要先实例化出来才行,但是非静态放方法是可以直接调用静态方法,原理还是这个加载顺序
代码块一般都是用来进行初始化的,而且静态代码块只执行一次,其他的可以多次执行
来一个有趣的
包也可以静态,对里面的方法或者属性,这个random方法一般是要通过类名加方法名调用的,但是如果使用的多,直接在包这里加一个static关键字来直接使用这个方法
抽象类
抽象类是一个简单的概念
使用abstract
修饰符来修饰
继承的抽象类中的抽象方法必须被重写
- 抽象类中可以有非抽象方法,但是抽象方法必须在抽象类中
- 抽象类是不能被new的,不能被实例化
接口
接口的定义其实和抽象类差不多,但是又差得很多
接口使用interface来进行定义接口,接口是一个单独的名称,不是类,接口可以多继承,使用implements关键字,还是来个代码展示吧
这里只继承了一个,可以继承多个接口,继承接口的实现类必须重写接口里的方法
- 由于接口会默认添加修饰符,所以可以直接写为
void add();
- 接口不能有自己的实例方法,只能为抽象方法
内部类
内部类就是在类里面的类,可分为
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
成员内部类
一般的内部类就是这么用的
- 内部类可以调用外部类的属性和方法
静态内部类
这个内部类就是多加了一个static
关键字,表示静态,这个关键字之前就讲过,而且加载时间是很早的,所以在使用静态内部类时就调用不了外部类的普通属性,因为加载时间不同,这个就不写了,和成员内部类一样,只是在public
后面加上静态修饰符就行了
局部内部类
局部内部类的定义也很简单,就是定义在方法里
使用也很简单,和一般的类没什么区别
匿名内部类
顾名思义,就是没有名字的内部类
不用将对象存储在变量中,直接使用该对象
异常
异常这里不作过多的解释,讲两个点(错误就不讲了,错误只要知道很严重就行了,一般也不要去犯错,一般也不会犯错,主要还是了解异常)
- 捕获处理异常
- 自定义异常
捕获处理异常
使用try catch
进行捕获处理,finally
表示无论有无异常都会进行的语句块,try表示可能会有异常的的语句块,catch表示有异常要处理的语句块
可以不用捕获异常,可以使用throws
抛出异常,throw是在方法内抛出,throws是方法的抛出
自定义异常
就一点,继承exception
类就行了,然后通过构造方法来定义一些异常条件