Java面试题-Java基础(⑨)-多态
1.0bject类常用的方法有哪些?
toString()
equals()
hashCode0clone()
getClass()
notify()
notifyAll()
wait()
finalize()
2.编写一个Student有属性name和idCard,实现封装并重写equals方法,如果name和idCard都相等则比较为true;(伪代码)
public String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public boolean equals(Object obj){
if(th is == obi)
return true
}
Student stu = (Student)obj;
if(this.name.equals(stu.name) && this.idCard.equals(stu.idCard))
return true;
}
return false
}
3.在上一题的基础上重写toString方法,输出对象信息
public String toString(){
return "Student[name = "+ name +",idCard = "+idCard+"];
}
4.==和equals的区别,详细说明基本和引用数据类型
==比较基本数据类型,比较值==比较引用数据类型,比较地址
equals方法只能比较引用数据类型,默认也比较地址。但是我们可以重写equals方法,并且自定义比较规则。
5.为什么重写equals要重写hashCode方法
1.默认情况下,equals比较为true,hashCode一定是相同的,但是我们重写了equals方法,打破了这种规则,所以我们需要继续重写hashCode方法,以维持这个规则。
2.在散列表中,默认是以两个对象equals比较为true,并且hashCode相同作为去除重复元素的依据。
6.描述方法重写规则
1.子类重写父类方法
2.方法名,参数列表都相同
3.返回值相同或者是其子类
4.访问权限不能严于父类
5.实例方法不能被重写为静态方法
6.静态方法可以被继承,但是不能被重写。
7.不能声明、抛出比父类更多的异常
7.什么是多态
父类引用指向子类对象
8.多态向上转型的三种情况
1.父类作为形参 实参为子类类型
2.父类作为声明返回值 实际返回值为子类类型
3.父类类型的数组、集合,元素为子类类型
9.java支持多继承吗?
不支持,Java只支持单根继承,即一个子类只能有一个直接父类。