Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

    • Java基础

      • Java基本概念与常识
      • Java基本语法
      • Java基本数据类型
      • Java包装类
      • Java基本概念对比辨析
      • Java面向对象基础
        • 面向对象三大特性
          • 继承
          • 封装
          • 多态
        • 面向对象和面向过程的区别
        • 浅拷贝vs深拷贝
        • Java值传递
        • 接口和抽象类的区别
      • Java异常处理
      • Java注解
      • Java泛型
      • Java反射
      • Java函数式编程
    • Java进阶

    • Java容器

    • Java并发编程

    • Java虚拟机

    • 常见面试题

  • 计算机基础

  • 框架|中间件

  • 架构

  • 后端
  • Java
  • Java基础
Marvel
2022-07-13
目录

Java面向对象基础

# Java面向对象基础

# 面向对象三大特性

# 继承

⭐ 描述:子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

⭐ 意义:为了提高代码的复用性和可扩展性,在定义不同类的时候存在一些相同的属性,为了方便使用,可以将这些共同属性抽象成一个父类,在定义其他子类时可以继承自该父类,减少代码的重复定义。

⭐ 特性:

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

# 封装

⭐ 描述:把一个对象的属性和方法隐藏在对象内部,不允许外部对象直接访问对象的内部信息。相当于把一个事物的状态信息和功能隐藏在其内部。但是可以提供一些可以被外界访问的方法来操作属性。如果属性不想被外界访问,我们不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,这个类就没有意义了。

# 多态

⭐ 描述:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

image-20220817114320088

⭐ 存在条件:继承、重写、父类引用指向子类对象

# 面向对象和面向过程的区别

  • 面向过程:面向过程性能比面向对象高。因为类调用需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发等一般采用面向过程开发。但是,面向过程没有面向对象易于维护、易服用、易扩展。
  • 面向对象:易维护、易服用、易扩展。因为面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,是系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。

java性能差的主要原因并不是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。

# 浅拷贝vs深拷贝

  • 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用的拷贝。

  • 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新对象,并复制其内容。

image-20220817114359352

# Java值传递

  • 按值调用(call by value):方法接收的是调用者提供的值。

  • 按引用调用(call by reference):方法接收的时调用者提供的变量地址。

一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。例子:

  1. 不能通过swap交换两个数的值

  2. 方法可以得到对象引用的拷贝,通过对象引用的拷贝可以修改这个对象的值

  3. 使用swap交换两个对象,其实交换的是两个对象引用的拷贝。

# 接口和抽象类的区别

  1. 接口方法默认是public,所有方法在接口中不能实现(Java8开始接口方法可以有默认实现,default关键字定义接口可以有实现,实现该接口后无需重写default对应的方法),而抽象类可以有非抽象的方法。
  2. 一个类可以实现多个接口,但只能实现一个抽象类,接口也可以通过extends扩展。
  3. 接口方法默认访问修饰符为public;抽象方法可以有public、protected和default修饰符,因为抽象方法是为了被重写,所以不能有private。
  4. 从设计层面,抽象是对类的抽象,是一种模板设计;接口是对行为的抽象,是一种行为的规范。
编辑 (opens new window)
#Java
上次更新: 2023/08/20, 21:21:52
Java基本概念对比辨析
Java异常处理

← Java基本概念对比辨析 Java异常处理→

最近更新
01
位运算
05-21
02
二叉树
05-12
03
Spring三级缓存解决循环依赖
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式