面试题练习(Java基础(二))

本文探讨了Java中的int与Integer的区别,特别是在使用==运算时的行为。还深入讲解了面向对象的概念,包括封装、继承和多态的重要性。此外,讨论了Java中多态的实现方式、单继承的原因以及重写与重载的区别。最后,提到了Object类的一些关键方法,如hashCode()、equals()和toString()等。

1.11 int和Integer有什么区别,二者在做==运算时会得到什么结果?

int是基本数据类型,Integer是包装类型也是一种引用数据类型,在做==运算时,Integer会自动拆箱成基本数据类型int类型然后与另外那个int类型的值进行比较,相等则返回true,不等则返回false。

1.12 说一说你对面向对象的理解

面向对象是一种更优秀的程序设计方法。它是以类、对象、继承、封装、消息等为基本概念进行程序设计。它是从现实世界中客观存在的对象出发,根据对象的本质特征,抽象成类,作为系统构成的基本单元来进行设计。采用面向对象的程序设计方法可以提高系统的复用性和可扩展性。

1.13 面向对象的三大特征是什么?

封装、继承和多态。

封装是指将对象的实现隐藏起来,再通过公共方法把对象的功能暴露出来;继承是指一个类通过继承其父类,可以具备父类的属性和方法;多态是指同一类型的对象,由于其具体的运行时类型不同,在调用同一方法时,可以表现出不同的行为特征。

1.14 封装的目的是什么,为什么要有封装?❌

封装的目的是将对象的实现细节隐藏起来,只暴露公共的部分,如公共的方法或者接口,这样可以便于未来单独修改实现而不影响整体系统,即不影响对于功能的调用这些。

有封装才可以实现软件系统易于修改的特性。

1.15 说一说你对多态的理解❌

多态是什么:同一个类型的对象,在调用同一个方法时,可以有不同的行为特征,原因是具体的实现类不同,这就是多态。

为什么要有多态:多态可以使程序更易于扩展。

1.16 Java中的多态是怎么实现的?

通过将子类对象赋值给父类对象的引用,然后在调用被子类继承的方法时,这个对象将表现出子类的行为特征,这样就实现了多态。

参考答案:多态的实现离不开继承,在设计程序时,我们可以将参数的类型定义为父类型。在调用程序时,则可以根据实际情况,传入该父类型的某个子类型的实例,这样就实现了多态。对于父类型,可以有三种形式,即普通的类、抽象类、接口。对于子类型,则要根据它自身的特征,重写父类的某些方法,或实现抽象类/接口的某些抽象方法。

1.17 Java为什么是单继承,为什么不能多继承?

为了避免多继承带来的混淆。比如两个父类中都有同一个方法时,子类继承后,就不知道应该继承哪个父类中的这个方法,这就产生了混淆。

1.18 说一说重写与重载的区别

重载是发生在一个类里面,当方法的名称相同,而参数列表不同时即为重载。

而重写是发生在父类和子类中,当子类继承自父类,则子类可以重写父类中的方法。

1.19 构造方法能不能重写?

不能。重写是在子类中对父类的方法进行重写,需要子类中该方法与父类中的方法方法名一致,而构造方法要求方法名与当前的类名一致,如果允许构造方法重写,则子类中将有一个构造方法的方法名与类名不一致而与父类的类名一致,则破坏了构造方法要与类名一致的原则。

1.20 介绍一下Object类中的方法

Class<?> getClass():获取当前对象的运行时类型

int hashCode():获取当前对象的hashCode值

boolean equals(Object obj):判断当前对象与传入的对象是否相等

String toString():获取当前对象的字符串表示

此外还有notify()、notifyAll()、wait()可以将当前线程进入等待或唤醒的状态,finalize()方法可以在对象没有引用时被自动调用,不建议手动调用这个方法。还有protected访问权限的clone()方法可以用以拷贝一个对象的副本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值