方法重载,超类引用可指向子类,子类引用可指向超类
用final和abstract修饰的类各有什么特点?举例说明。
final表示该类为该类继承链中最后一个类,该类不能有任何子类,因此不能用final修饰抽象类。
abstract修饰的类为抽象类,表示其中可以包含抽象方法,即只给出声明,具体定义在子类实现。然而,抽象类不能实例化,即不能用new创建对象。
举例说明Object类的方法equals()的使用情况。
equals方法可以用于比较两个对象是否相等,然而,这种比较只比较地址,不太实用,若要比较两个类内容是否相等,需要重写equals方法。
Java语言中的包是什么含义,它如何使用?
在java中,包可以看成是类的集合,在同一个包中的类可以互相访问。就比如com.company包,他表示编译后将该文件放到源文件目录下的com文件夹下的company文件夹,在company中的类可以互相访问。
包语句在文件的第一行,若没有该语句,则默认为无名包。
package语句和import语句的作用是什么?举例说明。
package语句用于指明当前文件所在的包,如一般默认都是
package com.company
, 当然也可以自己更改。当我们在写类时,如果要使用其他包中的类成员,类方法时,就可以使用import来引入该包,如
import com.company.*
表示引入company下的所有类,可以将*改为具体的类名。如果不打算引入类,那么在程序中使用该类时就必须显示指出其包名,假如company下有一个Student类,那应该这么写
com.company.Student temp = new com.company.Student()
Java语言中有几种对成员访问控制的修饰符,它们是如何使用的?
在java中,有四种对成员访问控制的修饰符,他们及使用范围如下
| |类中 | 包中 | 子类 | 不同包中非子类 |
| -:- | -:- | -:- | -:- | -:- |
| private | √ | × | × | × |
| 缺省 | √ | √ | × | × |
| protected | √ | √ | √ | × |
| public | √ | √ | √ | √ |
上述四种修饰符可以修饰类,成员变量,成员方法,将修饰符放到在类,变量,方法声明语句前面,即可设置该类,变量,方法的访问范围。
接口与抽象类的主要区别在哪些方面?
- 接口中的方法自带属性public,abstract,接口中的变量自带属性public,static,final。
接口中的方法均为抽象方法,而抽象类中可以有抽象方法,也可以有非抽象方法。
接口中的变量为静态的,且不可更改,实则为一个常量,而抽象类中的变量可以更 改。
接口支持多重继承,而抽象类不支持。
接口可以拓展类的能力,使类具有处理某件事情的方法,在于有没有,不同的类可以具有相同的接口。
而抽象类必须声明该类事物的方法,这些方法是通用的,根本的,他的子类必须有,子类的子类也必须有,该继承链上的所有类都必须有。
就比如狗是一种抽象类的话,那么他的子类(泰迪,二哈)都必须具有狗的根本属性,四条腿,有尾巴等等。
而接口表示一种能力,就比如接飞盘,狗可能会,猫也可能会,接飞盘并不是狗的根本能力,他只是一种可拓展的能力,并且这种能力并不局限于某种事物。
throw语句和throws语句的区别有哪些?
throw可以人为的抛出一个异常,而throws表示该函数可能抛出某些异常。
throws出现在函数头,而throw出现在函数体。
简述嵌套异常的处理过程。
当出现异常时,首先与最内层的try-catch-finally语句进行比较,如果不匹配,该异常可以被抛出,由外层函数处理,逐一检查匹配,直到找到匹配的为止。
catch-finally语句进行比较,如果不匹配,该异常可以被抛出,由外层函数处理,逐一检查匹配,直到找到匹配的为止。