1、Java面向对象有哪些特点
(1)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
(2)多态性:多态性是指允许不同子类型的对象对同-消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。
2、访问修饰符public, private,protected,以及不写(默认)时的区别?
作用域 当前类 同包子类 其他
public V V V V
protected V V V x
default v V x x
private V x x x
类的成员不写访问修饰时默认为default。 默认对于同一个包中的其他类相当于公开(public),对于是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当 于公开,对不是同一包中的没有子关系的类相当于私有。
3、构造器(constructor)是否可被重写(verride)?
答:构造器不能被继承,因此不能被重写,但可以被重载。
4、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:不对,如果两个对象x和y满足x.equals(y) == true, 它们的哈希码(hash code)应当相同。Ja
对于eqauls方法和hashCode方法是这样规定的: (1)如果两个对象相同(equals方法返回true),那么它们的hashCode值-定要相同:(2)如果两个对象的hashCode相同,它们并不一定相同。
5、抽象类(abstract class)和接口(interface)有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、 public的, 而接中的成员全都是public的。抽象类中可以定 义成员变量,而接口中定义的成员变量实际上都是常量。有抽方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。抽象类和接口中都可以包含静态成员变量。
6、抽象与封装的不同点
答:抽象和封装是互补的概念、一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过影藏对象内部状态信息做到封装,因此封装可以看成是用来提供抽象的一种策略。
7、抽象的(abstract)方法 是否可同时是静态的(static),是否可同时是本地方法(synchronized)修饰?
答:都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。本地方法与细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。
8、Java语言中支持的八种基本数据类型是:
byte,short,int,long,float,double,boolean,char
9、什么是自动拆装箱?
答:自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:吧int转化为Integer。
10、Java支持多继承吗?
答:不支持,Java是不支持多继承的。每个类都只能继承一个类,但是可以实现多个借口。