Java面试必备:面向对象、四大特性与构造器解析

需积分: 0 0 下载量 154 浏览量 更新于2024-08-04 收藏 39KB DOCX 举报
"常见面试题汇总1" 面试题1: 面向对象与面向过程的区别 面向对象编程(OOP)和面向过程编程(POP)是两种主要的编程范式。面向过程编程注重通过一系列步骤(即过程)来解决问题,它强调函数或过程的执行顺序。在POP中,数据和操作数据的函数通常是分离的。优点在于性能较高,特别是在资源有限的环境如单片机和嵌入式硬件上。然而,面向过程编程在维护、复用和扩展性上相对较弱。 面向对象编程则将数据和操作数据的方法封装在一起,形成类或对象。OOP的特点包括封装、继承和多态性,这使得代码更易于维护、复用和扩展。例如,在Java、C++或Python等高级语言中,OOP是主流。但它的缺点在于相比POP,性能可能会稍低。 面试题2: Java的四个基本特性 1. 抽象:抽象是将现实世界中的实体转换为软件世界的模型,可以是类或接口。数据抽象涉及定义对象的属性,而过程抽象涉及对象的行为。 2. 封装:封装是隐藏对象的内部细节并提供公共接口来访问它。在Java中,我们使用访问修饰符(如public、private、protected)来实现封装,确保数据的安全性。 3. 继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法。这样做可以避免代码重复,提高代码复用性。 4. 多态:多态是指不同的对象可以响应相同的调用,这在Java中表现为方法的重载(overloading)和覆盖(overriding)。重载发生在同一类中,改变参数列表,而覆盖发生在父子类之间,保持方法名和参数列表相同,但子类可以提供更具体的实现。 面试题3: 重载与重写 重载(Overloading)发生在同一个类中,要求方法名相同,但参数列表必须不同(可以是参数类型、个数或顺序的不同)。重载不涉及方法的返回值和访问修饰符,这是在编译时决定的。 重写(Overriding)发生在父类和子类之间,要求子类的方法与父类的方法具有相同的名称、参数列表,且子类的返回值类型小于等于父类,异常处理范围小于等于父类,访问权限至少与父类相同。如果父类方法是private,那么子类中相应的方法不是重写。 面试题4: 构造器Constructor 构造器是用于初始化新创建对象的特殊方法,它不能被重写(override),因为它是类的一部分,不是方法。构造器可以用public、private或protected修饰,但不能用static。构造器没有返回值。 面试题5: 访问控制符的区别 - public: 公有的,可以在任何地方访问。 - protected: 受保护的,可在同一包内及不同包的子类中访问。 - private: 私有的,只能在定义它的类内部访问。 - 默认(不写): 在同一包内可访问。 面试题6: String类的继承性 String类在Java中是final的,这意味着它不能被继承。这是因为String是核心库中的基础类,为了保证其内部机制的安全性和不变性,设计者将其声明为final。 面试题7: String与StringBuffer、StringBuilder的区别 - String是不可变的,一旦创建就不能修改,每次修改都会创建新的String对象,可能导致内存浪费。 - StringBuffer和StringBuilder是可变的,它们提供了append等方法来修改内容,适合在多线程环境和需要多次修改字符串的情况下使用。StringBuilder是线程不安全的,而StringBuffer是线程安全的,所以在单线程环境中,StringBuilder的效率更高。