论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
Java中面向对象的口试试题及答案解析
Java中面向对象的口试试题及答案解析
瑞星
金牌会员
|
2025-1-23 11:19:44
|
显示全部楼层
|
阅读模式
楼主
主题
987
|
帖子
987
|
积分
2961
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Java 的面向对象是一种编程思想,它将现实世界的事物抽象为“对象”,并通过类和对象来实现对数据的封装和行为的定义。以下是关于 Java 面向对象的具体解释:
基本概念
对象
:是程序中的基本构建块,表现现实世界中的实体或概念,具有状态(属性)和行为(方法)。比方,模拟一个银行账户系统时,每个账户就是一个对象,有账户持有者姓名、账户号码、当前余额等属性,以及存款、取款、查询余额等操作方法。
类
:是对象的模板或蓝图,定义了对象的属性和方法。在 Java 中,类是创建对象的基础,对象是类的实例。好比上述例子中的 BankAccount 类,它描述了银行账户的布局和操作。
三大特性
封装
:将对象的属性和行为(方法)封装在一个类中,通过访问修饰符控制对属性的访问级别,隐藏内部实现细节,仅对外提供公共的访问方式。这样可以提高数据的安全性,降低代码的耦合度。如 BankAccount 类中,将属性声明为私有属性,并提供公共方法来访问和修改这些属性。
继承
:允许一个类(子类)继承另一个类(父类)的属性和方法,子类可以拥有父类的所有属性和方法(除构造方法、私有属性和方法外),也可以定义本身的属性和方法。通过继承,可以建立类之间的层次布局,实当代码的重用和扩展。比方,创建一个通用的 BankAccount 父类,再创建具体的 SavingsAccount 和 CheckingAccount 子类继承自 BankAccount 父类。
多态
:指不同的对象对同一消息做出不同的响应。在 Java 中,多态主要体现在方法的重载和重写上。通过多态,可以提高代码的灵活性和可扩展性。好比,可以定义一个图形的基类 Shape,然后让不同的子类(如 Circle、Rectangle 等)实现各自的 draw 方法。
其他特性
抽象
:把一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。在 Java 中,可以通过抽象类和接口来实现抽象。
接口
:是一种完全抽象的类,只包含常量和抽象方法的声明,不包含具体的方法实现。接口是 Java 实现多重继承的一种手段,通过实现接口,一个类可以具有多个类型。
内部类
:是指在一个类中定义的另一个类。内部类可以访问外部类的所有成员(包括私有成员),而外部类则不能访问内部类的私有成员。内部类可以提高代码的可读性和封装性。
什么是面向对象编程(OOP)?
答案:面向对象编程是一种使用“对象”来设计软件和应用程序的编程范式。它将数据和行为封装在对象中,通过类创建对象,并通过继承、多态等特性实当代码的复用和扩展。
面向对象包括哪些特性,怎么明白这些特性?
答案:包括封装、继承和多态。
封装:把数据和操作数据的方法绑定在一起,对数据的访问只能通过已定义的接口,隐藏内部实现细节,提供公共接口。
继承:从已有类得到继承信息创建新类的过程,子类可以继承父类的属性和方法,也可以添加或覆盖原有方法。
多态:允许不同子类型的对象对同一消息作出不同的响应,即用同样的对象引用调用同样的方法但实行不同的行为。
访问权限修饰符 public、private、protected,以及不写(默认)时的区别?
答案:
public:对所有类可见,可以在任何地方被访问。
private:只能在当前类中可见,具有封装性,掩护数据安全。
protected:在同一包内和在子类中可见,用于类的继承。
默认(不写):在同一包内可见,对其他包不可见。
Java 中为什么要用 clone?
答案:当需要一个对象的完全独立副本时使用 clone。它创建了一个新的对象,其内容与原对象相同,但后续对新对象的修改不影响原对象。
new 一个对象的过程和 clone 一个对象的区别?
答案:
new:分配内存空间,调用构造函数初始化对象。
clone:首先也是分配内存,然后复制原对象的所有字段值到新对象中。
如何判断一个程序是否有面向对象的特征?
答案:存在类和对象的概念;使用封装来隐藏内部实现细节;使用继承来实当代码复用;使用多态来实现接口的多种实现方式。
谈谈你对多态的明白?
答案:多态是指允许不同子类型的对象对同一消息作出不同的响应。分为编译时的多态性和运行时的多态性,运行时多态通过方法重写和对象造型实现。
谈谈你对面向对象的明白?
答案:面向对象是一种将数据和行为封装在对象中的编程思想,通过类和对象来模拟现实世界的事物和关系,具有易维护、易复用、易扩展等优点。
抽象类和接口的区别?
答案:
抽象类可以有构造器,接口不能有;
抽象类中的方法可以是任意访问修饰符,而接口方法默认是 public;
抽象类可以实现多个接口,但只能继承一个类,接口可以实现多个接口。
JDK、JRE、JVM 三者之间的关系?
答案:JDK 是开辟工具箱,包含了 JRE 和一些开辟工具;JRE 是运行环境,提供了 Java 虚拟机和基础类库;JVM 是 Java 虚拟机,负责加载字节码并实行。
Java 语言有哪些特点?
答案:简朴易学、面向对象、平台无关、安全性高、支持多线程、网络编程方便等。
Java 和 C++ 的区别?
答案:Java 不支持指针直接访问内存,更安全;Java 类是单继承,C++支持多重继承;Java 有主动内存管理机制,无需手动开释内存等。
字符型常量和字符串常量的区别?
答案:字符常量是用单引号括起来的单个字符,占一个字节;字符串常量是用双引号括起来的若干个字符,占多个字节。
构造器 Constructor 是否可被 override?
答案:不可被 override,但可以被 overload。
重载和重写的区别?
答案:重载是在同一个类中方法名相同、参数类型或个数不同;重写是在子类中方法名、参数列表、返回值范围小于等于父类,抛出异常范围小于等于父类。
String 和 StringBuilder 的区别?
答案:String 是不可变的,每次修改都会创建新的对象;StringBuilder 是可变的,在大量字符串拼接时性能更好。
数组是不是对象?
答案:数组是对象,在 Java 中所有的类都是 Object 类的实例。
Java 的基本数据类型有哪些?
答案:byte、short、int、long、float、double、char、boolean。
为什么不能用浮点型表现金额?
答案:浮点型存在精度问题,大概会导致盘算效果不精确,而金额通常需要精确表现。
什么是值传递和引用传递?
答案:值传递是将现实参数的值传递给方法;引用传递是将现实参数的引用传递给方法,方法对参数的修改会影响现实参数。
了解 Java 的包装类型吗?为什么需要包装类?
答案:包装类型是对基本数据类型的封装,如 Integer、Double 等。需要包装类是为了提供对象的包装功能,以便在集合中使用基本数据类型。
主动装箱和拆箱是什么?
答案:主动装箱是将基本数据类型转换为对应的包装类型;主动拆箱是将包装类型转换为对应的基本数据类型。
String 为什么不可变?
答案:String 不可变是为了提高性能和安全性,制止字符串被意外修改,同时便于字符串的缓存和比力。
为何 JDK9 要将 String 的底层实现由 char[]改成 byte[]?
答案:为了减少内存占用和提高性能,因为 byte[]更节省空间,并且在大多数环境下字符串是以 UTF-8 编码存储的。
StringJoiner 是什么?
答案:StringJoiner 是 Java 8 引入的一个用于毗连字符串的工具类,它可以方便地将多个字符串按照指定的分隔符毗连起来。
String 类的常用方法有哪些?
答案:length()、charAt()、substring()、indexOf()、equals()、hashCode()等。
new String()会创建几个对象?
答案:一样寻常环境下会创建一个对象,但如果是通过字符串常量的方式创建,大概会在字符串常量池中查找是否存在相同的字符串,如果存在则不会创建新的对象。
什么是字符串常量池?
答案:字符串常量池是 Java 虚拟机中的一个特殊地域,用于存储字符串常量,以提高字符串的复用性和性能。
String 最大长度是多少?
答案:理论上没有明确的最大长度限制,但在现实应用中大概会受到内存大小的限制。
Object 常用方法有哪些?
答案:toString()、hashCode()、equals()、getClass()、clone()等。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
瑞星
金牌会员
这个人很懒什么都没写!
楼主热帖
复习一下Linux常用命令,孰能生巧~ ...
OpenSSL RSA相关基本接口和编程示例 ...
2022护网面试题总结
一次服务器被入侵的处理过程分享 ...
适用于顺序磁盘访问的1分钟法则 ...
内网安全-横向移动(1)
Iceberg在袋鼠云的探索及实践 ...
kubernetes入门
Oracle实现金额小写转大写函数 ...
Android studio 连接SQLite数据库 +创 ...
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表