螺竹编程
发布于 2024-04-24 / 26 阅读
0

Java面试题/Java基础:Java面向对象

什么是面向对象?

面向对象是一种思想,世间万物都可以看做一个对象。面向对象软件开发具有以下优点:

  • 代码开发模块化,更易维护和修改。

  • 代码复用性强。

  • 增强代码的可靠性和灵活性。

  • 增加代码的可读性。

面向对象的特征?

封装、继承、多态、抽象。

  1. 封装(Encapsulation):封装是将数据和操作封装在一个单元(即对象)中,通过定义公共接口来控制对数据的访问。对象的内部状态和实现细节被隐藏,只暴露有限的接口供其他对象进行交互。封装提供了数据的安全性和灵活性,同时也实现了代码的模块化和重用。

  2. 继承(Inheritance):继承是一种机制,允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法。子类可以继承父类的特征,并且可以在此基础上进行扩展、修改或重写。继承实现了代码的重用和层次结构的组织,提供了面向对象编程中的一种重要关系。

  3. 多态(Polymorphism):多态是指同一个方法名可以在不同的对象上执行不同的操作,提供了一种统一的接口来处理不同类型的对象。多态可以通过继承和接口实现,使得代码更加灵活和可扩展。在多态中,对象的具体类型可以在运行时确定,实现了代码的动态性。

  4. 抽象(Abstraction):抽象是指将复杂的现实世界问题抽象为类、接口或抽象类等概念,忽略不必要的细节,关注问题的本质和关键特征。抽象提供了一种模型化的方式来描述问题领域,帮助开发人员理解和处理复杂性。抽象也是面向对象编程的核心思想之一。

抽象类和接口有什么区别?

从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

  • 相同点:接口与抽象类都不能被实例化,但可以定义引用变量指向实例对象。本类型之间扩展关键字都是extends。

  • 不同点:

语法维度

抽象类

接口

定义关键字

abstract

interface

子类继承或实现关键字

extends

implements

方法实现

可以有

JDK8以前不能有,JDK8之后允许有default实现

方法访问控制符

无限制

有限制,默认是public abstract类型

属性访问控制符

无限制

有限制,默认是public static final类型

静态方法

可以有

不能有

static{}静态代码块

可以有

不能有

本类型之间扩展

单继承

多继承

java类的定义/组成?

  • 类的定义由访问级别、类型、类名、是否抽象、是否静态、泛型标识、继承或实现关键字、父类或接口名称等组成。

  • 类的访问级别有public和无访问控制符。

  • 类的类型为class、interface、enum。

相关demo:System.out.println();​语句不写在方法内会报错。
‍java public class Test{ public static void main(String[] args){ System.out.println("Hello World"); } System.out.println("Hello World");//此处编译器报错 } ‍​

== equals()

  • ==比较

    • 基本类型:比较的就是值是否相同。

    • 引用类型:比较的就是地址值是否相同。

  • equals:

    • 引用类型:默认情况下,比较的是地址值。

    • 两个对象的hashCode相同,equals方法不一定为true。