Java基础知识 | 常见面试题(中):面向对象基础

撰写成一问一答的形式,每次回答都默写,对比参考答案后,再默写出更恰当的答案。

 相关内容

Java基础知识 | 常见面试题(上):基础概念和常识

Java基础知识 | 常见面试题(上):基本语法

Java基础知识 | 常见面试题(上):基本数据类型

自测篇

1.1 面向对象和面向过程的区别
1.2 创建一个对象用什么运算符?对象实体与对象引用有何不同?
1.3 对象的相等和引用相等的区别
1.4 类的构造方法的作用是什么?
1.5 如果一个类没有声明构造方法,该程序能正确执行吗?
1.6 构造方法有哪些特点?是否可被 override?
1.7 面向对象三大特征
1.8 接口和抽象类有什么共同点和区别?
1.9 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

答案篇

1.面向对象和面向过程的区别

两者解决问题的方式不同:

面向对象是根据问题先抽象出涉及到的对象,再基于对象去分配任务去实现解决问题。

  • 将事务封装到对象中实现,之后再增加事务只需要创建对象即可。

面向过程则是将问题拆解成几个子问题再依次实现。

举个生活中的例子,餐馆的场景:

面向对象的方式则是创建厨师、服务员和顾客三个对象则能够实现这个场景;

面向过程则是创建顾客进门→服务员拿菜单介绍→顾客点菜下单→厨师做菜→服务员上菜→顾客结账

面向过程则是能够流程化,而面向对象更符合我们的思维思考;

2.创建一个对象用什么运算符?对象实体与对象引用有何不同?

创建对象使用new运算符,创建新的对象实例,并将新的对象引用指向该实例。

对象引用是什么?

  • 对象引用即指向堆内存中实际对象的地址,存储在栈当中。

  • 对象实体即对象的信息和内容,存储在堆当中。

  • 对象实体和对象引用像是绳子与气球,一个对象引用只能指向一个对象实体,而可以有很多个对象引用指向同一个对象实体。

3.对象的相等和引用相等的区别

引用相同通过查看地址是否相同,而对象相等判断的是其内存存放的值和属性是否相同。

4.类的构造方法的作用是什么?

类的构造方法便于在调用对象时直接赋值初始化,其中无参构造器能够保证即使无赋值初始化也不会报错;

5.如果一个类没有声明构造方法,该程序能正确执行吗?

能正常运行,因为在Java机制中当没有创建构造器时,其会默认创建无参构造器;

若创建构造器后,则必须创建无参构造成;

因为在创建引用类型时,new对象后加上的()调用的就是无参构造器,不创建很容易报错。

6.构造方法有哪些特点?是否可被 override?

构造方法方法名与类相同,无返回类型和返回值;

能够撰写参数列表,重载:创建多个构造方法必须参数列表不同,不能被override覆盖/重写;

但能够直接调用在创建对象时自动执行相应构造器方法,无需调用;

7.面向对象三大特征

面向对象三大特征为封装、继承和多态;

封装

  • 能够将常用的方法构建好后便于下次使用时直接调用相应的包即可;

  • 封装相当于黑盒,但同时必须提供相应的访问方法。

    • 每个类相对于一个对象,将该对象需要解决的功能实现封装,并且提供外部相应访问的方法。

    • 防止外部直接方法内部信息,同时必须提供给外部能够访问的途径,因为类的创建就是为了便于使用。

    • 就像使用电脑,我们无需知道里面的集成电路如何构建,只需要会使用键盘和鼠标即可操作计算机;

继承:代码复用性和可维护性

  • 在已经封装好的类的实现功能上再完善or增加相应的功能。

  • 但需要注意的是继承的是父类全部的方法;

  • 注意事项

    • 子类只是拥有父类的方法,即对于父类的私有方法只能访问而不能再其基础上修改。

    • 子类能够继承父类方法并拓展自己方法;

    • 子类可以用自己的方式实现父类的方法(不懂后期待补)。

多态:

  • 同种方法根据调用的对象不同而产生不同的结果,使用父类创建对象,使用父类的引用来引用子类的对象。

  • 对象类型和引用类型间必须是继承关系;

  • 只能够调用“父类和子类”都存在的方法;在运行时才能确定调用的是哪个类的方法;

  • 当子类覆盖父类方法时,则调用的是指向子类对象的方法,若该子类未覆盖父类方法,则调用的是父类的方法

8.接口和抽象类有什么共同点和区别?

接口出现的目的是为了定义规范,必须实现某些功能才能被认为符合某类范式。

抽象类则是为了将具象化事物抽象出来,便于按照指定特征去实现,就像动物抽象类,狗和猫都能实现其基础功能,并且在该基础上实现其各自特点,相当于是参考模板。

接口和抽象类的共同点:

  • 继承子类必须实现其所有方法;

  • 且接口和抽象类都不能实例化;

接口

抽象类

子类必须实现

子类必须实现

继承机制不同

能够多接口

只能继承一个抽象类

对类进行约束,实现相应行为

目的是复用,关注所属关系

语法不同

Inference

Abstract

修饰符要求不同

public、static或final修饰

默认为default

不能被修改,且必须有初始值

可被重新定义or重新赋值。

9.深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

浅拷贝只是创建新的对象引用到相同对象实体中,而深拷贝则是将对象实体(信息和内容)和对象引用都复制一遍

引用拷贝则是直接引用对象,与原对象共用对象引用和对象实体;

  • 浅拷贝的对象与原对象不同,但调用的内容是相同共用的;

问题和理解大部分来源为Guide哥的Java面试指南,有需要的可自行检索加入其星球获得。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然,我可以为您介绍一些Java基础知识面试题。以下是一些常见Java基础知识面试题及其答案: 1. 什么是JavaJava是一种面向对象的编程语言,具有跨平台特性,可以在不同的操作系统上运行。 2. Java的特点有哪些? Java具有以下特点: - 简单易学:Java语法相对简单,与C++相比更易于学习和使用。 - 面向对象Java支持面向对象的编程范式,具有封装、继承和多态等特性。 - 跨平台性:Java通过虚拟机(JVM)实现跨平台,一次编写,到处运行。 - 安全性:Java提供了安全机制,如内存管理、异常处理和安全检查等。 - 多线程:Java支持多线程编程,可以实现并发操作。 3. 什么是面向对象编程? 面向对象编程(OOP)是一种编程范式,将数据和操作数据的方法封装在一起,形成对象。对象可以通过定义类来创建,类定义了对象的属性和行为。 4. Java的基本数据类型有哪些? Java的基本数据类型包括: - 整数类型:byte、short、int、long - 浮点数类型:float、double - 字符类型:char - 布尔类型:boolean 5. Java的包是什么? 包(Package)是Java用于组织类和接口的一种机制。它可以将相关的类和接口放在同一个包,方便管理和使用。 6. 什么是Java的访问修饰符? Java的访问修饰符用于控制类、方法和变量的访问权限。常用的访问修饰符有public、protected、private和默认(没有修饰符)。 7. Java的异常处理机制是什么? Java的异常处理机制通过try-catch-finally语句块来实现。当代码可能抛出异常时,可以使用try块来捕获异常,并在catch块处理异常。finally块的代码无论是否发生异常都会执行。 8. 什么是Java的多线程? 多线程是指在一个程序同时执行多个线程,每个线程都是独立的执行流。Java通过Thread类和Runnable接口来实现多线程编程。 9. Java的垃圾回收是什么? Java的垃圾回收是自动内存管理的一种机制,通过垃圾回收器自动释放不再使用的内存。开发人员无需手动释放内存,可以专注于业务逻辑的实现。 10. 什么是Java的反射机制? Java的反射机制是指在运行时动态地获取类的信息并操作类的属性和方法。通过反射机制,可以在运行时创建对象、调用方法和访问属性等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值