JavaSE 部分
A.面向对象
1.面向对象都有哪些特性以及你对这些特性的理解,什么是多态
默认情况下面对象都有 3 大特性 ,封装.继承.多态
1) 继承:继承是从已有类得到继承信息创建新类的过程.(extends)
2) 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口.
3)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应.
方法重载(overload)实现的是编译时的多态性(也成为前绑定),
而方法重写(override)实现的是运行时的多态性(也成为后绑定).
2.& 和 && 的区别
&运算符有两种用法:(1)按位与; (2)逻辑与.
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型,&表示按位与操作
0 & 0 = 0;0 & 1 = 0;1 & 0 = 0;1 & 1 = 1;
&&运算符是短路与运算.如果&&左边的表达式的值是false, 右边的表达式会被直接短路掉,不会进行运算.
3. 重载(overload)和重写(override)的区别?
方法重载的规则:
1.方法名一致,参数列表中参数的顺序,类型,个数不同.
2.重载与方法的返回值无关,存在于父类和子类,同类中.
3.可以抛出不同的异常,可以有不同修饰符.
方法重写的规则:
a.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致.
b.构造方法不能被重写,声明为 final 的方法不能被重写,声明为static 的方法不能被重写, 但是能够被再次声明.
c.访问权限不能比父类中被重写的方法的访问权限更低.
d.重写的方法能够抛出任何非强制异常(UnchekedException,也叫非运行时异常),无论被重写的方法是否抛出异常.但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以.
4.抽象类(abstract class)和接口(interface)有什么异同?
抽象类:
1.抽象类中可以定义构造器
2.可以有抽象方法和具体方法
3.接口中的成员全都是public的
4.抽象类中可以定义成员变量
5.有抽象方法的类必须被声明为抽象类.而抽象类未必要有抽象方法
6.抽象类中可以包含静态方法
7.一个类只能继承一个抽象类
接口:
1.接口中不能定义构造器
2. 方法全部都是抽象方法
3. 抽象类中的成员可以是 private/默认/protected/public
4. 接口中定义的成员变量实际上都是常量
5. 接口中不能有静态方法
6. 一个类可以实现多个接口
相同:
1.不能够实例化
2.可以将抽象类和接口类型作为引用类型
3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类
5.==和 equals 的区别?
equals 和== 最大的区别是一个是方法一个是运算符.
==: 如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址是否相等.
equals(): 用来比较方法两个对象的内容是否相等.
注意: equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写, 则比较的是引用类型的变量所指向的对象的地址.
6.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承具体类?
接口可以继承接口,而且支持多重继承
抽象类可以实现接口,抽象类可以继承具体类也可以继承抽象类