1.抽象类和抽象方法
用abstract关键字修饰的类和方法。
抽象类和抽象方法的特点
1)抽象类和抽象方法都通过abstract关键字来修饰
2)抽象类不能实例化。抽象类可以没有抽象方法、也可以有一个或者多个抽象方法。
3)抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有抽象方法才能实例化,否则子类还是一个抽象类。
2.final、finally、finalize的区别(重点)
final用于声明属性,方法和类,分别表示属性不可变,方法不可重写,类不可继承。
finally是异常处理语句结构的一部分,表示这一部分总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以重写此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用。
3.java中实现多态的机制是什么?(重点)
多态是同一个实现接口,使用时不同的实例而执行不同的操作。靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期采动态绑定,就是引用变量所指向的具体实例化对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
4.什么是接口?
接口是一种规范和标准,他们可以约束类的行为,是有些方法特征的集合,但是没有方法的具体实现。接口可以看做是一种特殊的“抽象类”,但是采用完全不同的语法来表示,两者的设计理念是不同的,抽象类利于代码复用,接口利于代码扩展和维护。
5.abstract和interface有什么区别(重点)
含有abstract修饰符的class纪委抽象类,abstract类不能创建实例对象。含有abstract方法的类必须定义为抽象类,抽象类中的方法不必是抽象的。抽象类中定义抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义abstract类型。
接口(interface)可以说成抽象类的一种特例,接口中所有方法都必须是抽象的。接口中方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面说下两者的区别:
1)抽象类可以有构造方法,接口中不能有构造方法。
2)抽象类中可以有普通成员变量,接口中没有普通成员变量。
3)抽象类中可以包含非抽象方法,接口中所有方法必须都是抽象的,不能有非抽象的普通方法。
4)抽象类中抽象方法的访问类型可以是public,protected和默认作用域(不建议使用默认作用域),但接口中的抽象方法只能是public类型,并且默认即为public abstract类型。
5)抽象类中可以包含静态方法,接口中不能包含静态方法。
6)抽象类和接口中可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7)一个类可以实现多个接口,但只能继承一个抽象类。
6.接口是否可继承接口?抽象类是否实现接口?
接口可以继承接口。抽象类可以实现接口,抽象类可继承实体类,但前提是实体类必须有明确的构造方法。抽象类中可以有静态的main方法。
7.什么是异常?
异常就是在程序的运行过程中所发生的的不正常的事件,比如所需文件找不到,网络连接不通或中断,算术运算符出错,数组小标越界,类型转换异常。
8.运行时异常(RuntimeException)与一般异常有何异同(重点)
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要是RuntimeException类的子类都属于运行是异常,而不是RuntimeException类的子类的其他异常类都是一般异常编译器要求方法必须声明抛出可能发生的非运行是异常,但是并不要求去必须声明抛出为被捕获的运行时异常。
9.java语言如何进行异常处理?关键字:throws、throw、try、catch、finally分别代表什么意义?在try块中可以抛出异常吗?(重点)
Java的异常处理是通过5个关键词来实现的:try,catch、throw、throws和finally。
throws声明方法有可能抛出的异常。
throw手动抛出异常。
try…catch是内部捕获异常并做自定义处理
finally是无论是否有异常都会被处理的语句,除非在finally前,存在System.exit(整数值)时除外。
在try块中可以抛出异常,但是必须catch或者在方法中声明抛出的异常类型(运行是异常除外)。
10.程序中try{}里有一个return运距,,那么紧跟在这个try后的 finally{}里的代码会不会 被 执行?在什么时候被执行?(重点)
try-catch-finally的执行顺序是线执行try块中的代码,如果发生异常则进入catch块处理,但是无论是否发生异常都会进行finally块,所以finally块中的代码会在try块中的return语句执行前执行。