java高频面试之SE-04

embedded/2024/12/29 1:55:43/

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

面向对象和面向过程是两种不同的编程范式,它们在设计和组织代码方面存在显著的区别。

当然可以,下面用通俗易懂的例子来说明面向对象和面向过程的区别。

面向过程

例子:做早餐

  1. 步骤

    • 准备食材(鸡蛋、面包、牛奶)。
    • 煮鸡蛋。
    • 烤面包。
    • 倒牛奶。
    • 摆盘,享受早餐。
  2. 代码示例

function prepareBreakfast() {prepareIngredients();boilEggs();toastBread();pourMilk();serve();
}function prepareIngredients() {// 准备鸡蛋、面包、牛奶
}function boilEggs() {// 煮鸡蛋的逻辑
}function toastBread() {// 烤面包的逻辑
}function pourMilk() {// 倒牛奶的逻辑
}function serve() {// 摆盘
}

面向对象

例子:做早餐(面向对象)

  1. 对象

    • 食材(Ingredient):有属性(如名称数量)和方法(如准备())。
    • 早餐(Breakfast):有属性(如食材)和方法(如准备())。
  2. 结构

class Ingredient {String name;int quantity;void prepare() {// 准备食材的逻辑}
}class Breakfast {List<Ingredient> ingredients;void prepare() {for (Ingredient ingredient : ingredients) {ingredient.prepare();}// 其他步骤}
}// 创建对象并做早餐
Ingredient egg = new Ingredient("鸡蛋", 2);
Ingredient bread = new Ingredient("面包", 2);
Breakfast breakfast = new Breakfast([egg, bread]);
breakfast.prepare();

总结对比

  • 面向过程类似于制定一个详细的步骤说明,强调操作的调用顺序,像一份食谱。
  • 面向对象则将相关数据和操作封装在一个对象中,更像是在构建一个完整的厨房设备,每种食材可以有自己独立的准备方法,方便管理和复用。

通过上面的例子,可以看到面向对象如何更好地组织和管理复杂性,而面向过程则更侧重于操作步骤本身。

java_93">java的三大特性是什么?

Java 的三大特性是:封装、继承和多态。下面用通俗易懂的例子来描述这三种特性。

1. 封装 (Encapsulation)

定义:封装是将数据(属性)和对数据的操作(方法)包装在一起,只暴露必要的接口给外部访问。

例子:想象一个手机

  • 内部数据:手机的电池容量、存储空间等。
  • 操作方法:开机、关机、发短信等。

你只需要通过手机的按钮或屏幕进行操作,而不需要知道内部如何实现。例如,按下开机键就可以开机,细节都被隐藏了。

代码示例

java">class Phone {private String brand; // 品牌信息,封装在内部private int battery;  // 电池容量public Phone(String brand, int battery) {this.brand = brand;this.battery = battery;}public void turnOn() {System.out.println(brand + " 手机已开机!");}
}

2. 继承 (Inheritance)

定义:继承是一个类可以基于另一个类创建,用于实现代码重用。子类可以继承父类的属性和方法。

例子:想象一个动物的例子。

  • 父类:动物(Animal),具有通用属性,如名字、年龄。
  • 子类:狗(Dog)和猫(Cat),继承了动物的属性,并且可以有自己特有的行为。

代码示例

java">class Animal {String name;public Animal(String name) {this.name = name;}public void eat() {System.out.println(name + " 在吃饭!");}
}class Dog extends Animal {public Dog(String name) {super(name);}public void bark() {System.out.println(name + " 在叫!");}
}

3. 多态 (Polymorphism)

定义:多态是指同一方法可以有不同的实现,具体的执行在运行时决定。

例子:想象一个交通工具的例子。

  • 不同的交通工具(如汽车、飞机)都有move()这个方法,但它们实现的方式不同。汽车是开,飞机是飞。

代码示例

java">class Vehicle {public void move() {System.out.println("交通工具在移动");}
}class Car extends Vehicle {public void move() {System.out.println("汽车在开");}
}class Plane extends Vehicle {public void move() {System.out.println("飞机在飞");}
}// 使用多态
Vehicle myVehicle = new Car();
myVehicle.move(); // 输出: 汽车在开myVehicle = new Plane();
myVehicle.move(); // 输出: 飞机在飞

总结

  • 封装:保护内部数据,只通过方法访问,像手机只通过按钮操作。
  • 继承:重用代码,父类的特性可被子类继承,就像狗和猫都继承动物的特性。
  • 多态:同一个方法在不同对象上的不同表现,像交通工具的move()方法。

这些特性让 Java 成为一个灵活且强大的编程语言,方便开发和维护代码。

IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3
在这里插入图片描述


http://www.ppmy.cn/embedded/149611.html

相关文章

华为IoTDA 智慧路灯设备SDK与平台通信C 流程bug解决

华为官方教程网址&#xff1a;智慧路灯设备SDK与平台通信&#xff08;C&#xff09;_设备接入 IoTDA_华为云 “建立连接”部分前完全正确。 问题描述&#xff1a; 在连接时&#xff0c;填写了正确的“设备id”和“密码”依旧报错&#xff1a; connect failed: messageld 0,cod…

【人工智能学习】线性回归模型使用Python实现简单的线性回归

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

STM32开发笔记123:使用STM32CubeProgrammer下载程序

文章目录 前言一、STM32CubeProgrammer二、一键下载电路三、STM32CubeProgrammer的使用1、配置2、连接3、擦除芯片4、下载程序(1)在STM32CubeIDE中编译出HEX文件(2)打开文件并下载(3)下载成功后,显示如下信息前言 本文介绍使用STM32CubeProgrammer下载程序到STM32微控制…

[阅读笔记]GPU-Util指标的重新理解

主要来自于文章 搞懂 NVIDIA GPU 性能指标 很容易弄混的一个概念&#xff1a; Utilization vs Saturation 这篇文章简单的来说&#xff0c;就是纠正我们对nvidia-smi中的GPU-Util这一个指标的直观理解。 在直观的理解中&#xff0c;这个指标应该表示GPU计算资源的饱和度&…

Linux增加回收站功能

功能简介 rm命令是非常危险的命令&#xff0c;为了防止用户误删文件&#xff0c;所以我们在执行rm命令时将文件添加到回收站&#xff0c;防止误删文件。 相关环境变量 名称描述TRASH_DIR 回收站目录&#xff0c;默认为/Recycle_Bin 文件命名规则 文件名生成格式为 原始文件名…

闲谭Scala(3)--使用IDEA开发Scala

1. 背景 广阔天地、大有作为的青年&#xff0c;怎么可能仅仅满足于命令行。 高端大气集成开发环境IDEA必须顶上&#xff0c;提高学习、工作效率。 开整。 2. 步骤 2.1 创建工程 打开IDEA&#xff0c;依次File-New-Project…&#xff0c;不好意思我的是中文版&#xff1a;…

16×16LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告+仿真+单片机源程序)

资料下载地址&#xff1a;​1616LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告仿真单片机源程序)​ 1、功能介绍 设计1616点阵LED显示器的驱动电路&#xff0c;并编写程序实现在1616点阵LED显示器上的字符滚动显示。1616点阵LED显示器可由4块88点阵LED显示器构成。可采…

vulnhub-Raven2靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 四、结论 一、测试环境 1、系统环境 渗透机&#xff1a;kali2021.1(192.168.119.129) 靶 机&#xff1a;3.16.0-6-amd64(192.168.119.128) 2、使用工…