Java面试题-Java基础(⑨)-多态

137 阅读2分钟

Java面试题-Java基础(⑨)-多态

Java面试题专栏---点击进入学习

640 (14).jpg

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只支持单根继承,即一个子类只能有一个直接父类。