Java面向对象
1.hashCode()和equals()方法的区别。
1.通过equals()判断能相等的,说明是相同的对象,也具有相等的哈希码(或散列码),说明HashCode()方法也判断相同。
2.如果两个对象的hashCode相同,他们可能不是同一对象。所以他的equals()可能判断不同。
2.请判断当一个对象被当作参数传递给一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
Java中只有值传递参数,当一个对象实例作为一个参数传递到方法中时,参数的值就是对该对象的引用,对象的内容可以在被调用方法中改变
,但是原对象是不改变的。
3.接口和抽象类的区别是什么?
Java提供和支持创建抽象类和接口,他们的实现有共同点,不同点在于:
1.接口中所有的方法隐含的都是抽象的,而抽象类可以同时包括抽象和非抽象方法。
2.类可以实现很多个接口,但是只能继承一个抽象类。
3.类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须声明为抽象的。
4.抽象类可以在不提供接口方法实现的情况下实现接口。
5.Java接口中声明的变量都是final的,抽象类的可以包含非final得变量。
6.Java接口中的成员函数默认是Public的。抽象类的成员函数可以是其他的修饰符。
7.接口是绝对抽象的,不可被实例化,抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的(不懂)。
4.请说明Java是否支持多继承
Java中类不支持多继承,只支持单继承。但是Java中接口支持多继承。一个子接口可以有多个父类。(接口的作用是用来扩展对象的功能,一个子接口能继承多个父类接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)
5.请解释一下extends 和super 泛型限定符
上界<?extend Fruit>
下界<?super Apple>
上界的List只能get,不能add(除了add的null)
下界的List只能add,不能add
示例代码
1 import java.util.ArrayList; 2 import java.util.List; 3 4 class Fruit {} 5 class Apple extends Fruit {} 6 class Jonathan extends Apple {} 7 class Orange extends Fruit {} 8 9 public class CovariantArrays { 10 public static void main(String[] args) { 11 //上界 12 List<? extends Fruit> flistTop = new ArrayList<Apple>(); 13 flistTop.add(null); 14 //add Fruit对象会报错 15 //flist.add(new Fruit()); 16 Fruit fruit1 = flistTop.get(0); 17 18 //下界 19 List<? super Apple> flistBottem = new ArrayList<Apple>(); 20 flistBottem.add(new Apple()); 21 flistBottem.add(new Jonathan()); 22 //get Apple对象会报错 23 //Apple apple = flistBottem.get(0); 24 } 25 }


浙公网安备 33010602011771号