1 java三大特征
1)封装:即class,把一类实体定义成类,该类有变量和方法。
2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法。
3)多态:通过父类对象可以引用不同的子类,从而实现不同的业务逻辑。
2 接口和抽象类区别
1)接口需要实现用implements,抽象类需要继承用extends
2)一个类可以实现多个接口,一个类只能继承一个抽象类。
3)实现接口必须实现接口里面的所有方法,继承抽象类只需要实现有abstract修饰的方法。
4)接口默认是public修饰,抽象类可以有私有方法和变量。
抽象类适用场景:规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。
接口适用场景:如果你想实现多重继承,那么你必须使用接口;类与类之前需要接口进行协调,而不在乎其如何实现。
3 重载和重写的区别
1)定义区别:重载是方法名相同,参数个数或类型不同,调用时候根据参数调用不同的重载方法。重写是子类实现父类的虚方法,使用注解@Overload。
2)类关系区别:重载是在一个类中方法直接的关系,重写是子类和父类关系。
3)产生方法区别:重载中同名的方法可以有多个,重写只有在子类中实现一个方法。
4)参数列表区别:重载参数个数或类型不同,重写参数与父类一样。
5)调用方法区别:重载根据入参决定方法,重写由对象的类型决定。
4 ==和equals区别
1)功能不同:“==”判断两个变量或是实例是不是指向一个内存空间。“equal”是判断两个变量或实例所指向的内存空间的值是不是相同。
2)定义不同:“==”在JAVA中是一个运算符。“equal”在JAVA中是一个方法。
5 JAVA自动装箱和拆箱
装箱:将基本数据类型转换成包装类对象。
拆箱:将包装类对象中值转换成基本数据类型。
基本数据类型:int、float、double、boolean、char、byte
对象:基本特征,有方法
扩展问题:java为什么要引入自动装箱和拆箱的功能?
因为java集合中,只支持对象,因此需要将整数自动装箱成对象。