- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Java面向对象核心面试题及答案
一、基础概念题
问:Java中面向对象的三大特征是什么?分别简单说明作用
答:三大特征是封装、继承、多态。封装是把对象的属性和行为隐藏起来,只通过公共接口暴露,比如实体类的private字段+get/set方法,能避免属性被随意修改;继承允许子类复用父类的代码,减少冗余,比如Animal类作为父类,Dog、Cat子类可直接用eat()方法;多态让同一行为有不同实现,比如父类引用指向子类对象(Animalanimal=newDog()),调用animal.eat()时实际执行Dog的eat(),提高代码灵活性。
问:封装的核心思想是什么?实际开发中怎么实现封装?
答:核心思想是“数据隐藏+接口暴露”,即对象的内部状态(属性)不允许外部直接访问,必须通过指定的方法(接口)操作,保证数据的安全性和一致性。实际开发中:①属性用private修饰;②提供public的getter(获取属性值)和setter(修改属性值)方法,在setter中可添加校验逻辑(比如年龄不能为负数);③必要时提供构造方法初始化属性,避免创建无效对象。
问:继承中super关键字的作用是什么?和this关键字有什么区别?
答:super的核心作用是访问父类的成员(属性、方法、构造器)。具体用法:①super.属性/方法:访问父类中被子类隐藏或重写的属性/方法;②super():调用父类的构造器,必须放在子类构造器的第一行,且只能调用一次。区别:this指向当前对象,用于访问当前类的属性、方法和构造器;super指向父类对象,用于访问父类的成员,两者不能同时在构造器中调用构造器(this()和super()互斥)。
二、进阶理解题
问:什么是多态?多态的实现条件有哪些?
答:多态是指同一操作作用于不同对象,产生不同结果。比如“叫声”操作,Dog对象是“汪汪叫”,Cat对象是“喵喵叫”。实现条件:①存在继承关系(子类继承父类);②子类重写父类的方法;③父类引用指向子类对象(向上转型),比如Animalanimal=newDog()。
问:抽象类和接口的区别是什么?分别在什么场景下使用?
答:核心区别如下:
维度
抽象类(abstractclass)
接口(interface)
继承/实现
子类单继承
类多实现
成员方法
可包含普通方法和抽象方法
JDK8后可有默认方法/静态方法,抽象方法无实现
成员变量
可包含普通属性(可修改)
只能是publicstaticfinal常量(不可修改)
构造器
有构造器(不能实例化)
无构造器
适用场景:抽象类用于“部分实现”的场景,比如多个子类有共同的方法实现(普通方法),同时需要子类各自实现特定方法(抽象方法),比如交通工具类(Vehicle)有run()普通方法,飞机、汽车子类重写fly()/drive()抽象方法;接口用于“完全抽象”的场景,只定义行为规范,不关心实现,比如Comparable接口只定义compareTo()方法,让不同类(String、Integer)各自实现比较逻辑。
问:重写(Override)和重载(Overload)的区别是什么?
答:两者是Java中实现多态的两种方式,核心区别:
重写(Override):子类对父类同名、同参数列表、同返回值(或子类返回值)的方法进行重新实现,方法签名(方法名+参数列表)必须完全一致;访问权限子类不能比父类更严格(比如父类是public,子类不能是private);异常抛出子类不能比父类更宽泛。比如Dog类重写Animal类的eat()方法。
重载(Overload):同一个类中,方法名相同、参数列表不同(参数个数/类型/顺序不同)的多个方法,返回值类型、访问权限可不同。比如一个类中的add(inta,intb)和add(doublea,doubleb)。
简单记:重写是“父子类间的方法覆盖”,重载是“同类中的方法多态”。
问:Java中为什么不能多继承?但可以多实现接口?
答:Java不支持类的多继承,核心原因是“菱形问题”(歧义问题):如果子类同时继承两个父类,且两个父类有同名同参数的方法,子类无法确定调用哪个父类的方法。比如类C继承A和B,A和B都有eat()方法,C调用eat()时会冲突。而接口支持多实现,因为接口的抽象方法没有实现(JDK8默认方法有实现,但可通过显式指定接口名调用解决冲突),子类必须自己实现所有抽象方法,不
原创力文档


文档评论(0)