java 内部类 接口_java入门基础笔记整理:[8]接口与内部类

一.接口

1.什么是接口接口是一种特殊的抽象类, 所有方法都是抽象的.

* 2.接口和抽象类的区别抽象类用abstract class定义, 接口用interface定义

抽象类中可以有不抽象的方法, 接口中的方法全都是抽象的

抽象类使用extends继承, 接口使用implements实现

抽象类中的方法没有默认修饰符, 接口中的方法默认都是abstract public修饰的

抽象类中的成员变量没有默认修饰符, 接口中的成员变量默认被public static final修饰

一个类只能继承一个抽象类, 一个类可以实现多个接口

* 3.什么时候用抽象类, 什么时候用接口:如果一个类所有方法都是抽象的, 那么就用接口.

如果一个类中抽象方法和不抽象的方法全都需要, 那么就定义为抽象类.

4.什么情况下一个类不能同时实现2个接口两个接口中有方法名, 参数列表相同, 但是返回值类型不同的方法.

5.什么情况下会把子类类型强转为父类类型当一个子类对象可以匹配多个重载的方法, 而多个方法中的形参是这个子类实现的不同的父类类型.

这时调用不明确, 因为子类对象可以传入多个方法, 需要强转为父类类型, 才能明确调用哪个方法.

二.内部类

1.什么是内部类在类中定义的类就是内部类

2.类中的内部类a.什么是类中的内部类

在一个类中定义另外一个类, 内部类是外部类的一个成员.

在创建内部类对象时, 必须先创建外部类对象. 然后通过外部类对象才能创建内部类对象.

创建对象的语法: 外部类名.内部类名 变量名 = new 外部类().new 内部类();

一个外部类对象可以有多个内部类对象, 一个内部类对象只能有一个外部类对象

b.什么时候使用类中的内部类

当一个类需要访问另一个类的成员时.

当创建一个类需要先创建另一个类的对象时.

c.内部类访问外部类成员

可以使用"外部类名.this.成员名"形式访问外部类对象的成员.

在方法中使用this, this代表调用当前方法的对象. "外部类名.this"代表调用当前方法的对象的外部类对象

外部类不能访问内部类的成员

d.内部类中不能定义静态成员

static的本意就是不创建对象就能直接使用,内部类的本意是必须创建外部类对象才能使用, 互相矛盾

3.方法中的内部类a.什么是方法中的内部类

内部类定义在方法中, 只能在当前方法中使用

b.方法中的内部类和类中的内部类的区别

只能在当前方法中使用, 定义类的代码必须在使用类之前

c.方法中的内部类怎么创建对象

在方法中直接使用 new 类名()

d.什么时候用方法中的内部类

如果一个类只在某个方法中使用的时候

e.方法中的内部类怎么访问方法中的局部变量

这个局部变量必须是final的

* 4.匿名内部类a.什么是匿名内部类

匿名内部类也是方法中内部类的一种, 一个没有名字的内部类

new 父类名() { 类定义 }

b.什么时候使用匿名内部类

如果一个类只使用一次, 那么就可以定义为匿名内部类

c.匿名内部类的class文件名

外部类名$编号.class

5.静态内部类a.什么是静态内部类

用static关键字修饰的内部类, 可以不创建外部类对象直接使用, 可以定义静态成员

b.静态内部类和普通的类中内部类的区别

创建对象: 外部类名.内部类名 变量名 = new 外部类名.内部类名();

访问外部成员: 不能访问外部非静态成员

定义静态成员: 可以定义静态成员

三.异常

1.什么是异常异常就是程序运行过程中出现的一些错误, 使用throw关键字抛出的一些对象.

可以通知调用处, 调用处下面的代码不会再执行了.

2.异常的处理方式a.声明

在参数列表之后, 使用throws关键字声明要抛出的异常, 这样做在方法中出现了异常的时候, 该方法会将此异常继续抛出给调用者

异常一旦抛出, 下面的代码不再执行

b.捕捉

将有可能出现异常的代码放在try代码块中, 使用catch关键字捕捉指定的异常, 当try代码出现这个异常的时候, 就会执行catch中的代码

异常如果被捕获, try...catch代码块外面的代码可以继续执行

3.异常的分类a.编译时异常

Exception中除了RuntimeException的部分, 编译之前在代码中必须对其进行声明或捕捉, 否则编译报错

b.运行时异常

RuntimeException或其子类, 在代码中可以不对其进行处理, 编译不报错.

这类异常经常会出现, 例如数组索引越界, 空指针, 算数异常, 如果对其进行处理, 非常麻烦, 代码可读性也会下降.

4.多个异常的处理方式a.声明

throws后面可以声明多个异常, 用","分割

b.捕捉

try代码块后面可以跟多个catch, 每个catch中指定要捕获的异常

如果要捕获的异常有子类和父类的关系, 子类要写在父类的上面

5.子类重写父类方法时注意的异常问题子类不能比父类抛出更多的异常, 子类抛出的异常范围要更小, 是父类异常的一个子集

如果父类没有抛出任何异常, 那么子类中的异常只能捕获

6.finally的使用finally是配合try使用的, 只要执行了try中的额代码, finally中的代码就一定会执行.

finally和finalize和final有什么区别?

finally是必须执行的代码

finalize是Object类中的一个方法, 这个方法默认在对象被销毁之前执行

final是最终的, 可以用来修饰类, 方法, 变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值