当前位置: 首页 > article >正文

java高频面试之SE-04

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

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

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

面向过程

例子:做早餐

  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的三大特性是什么?

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

1. 封装 (Encapsulation)

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

例子:想象一个手机

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

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

代码示例

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),继承了动物的属性,并且可以有自己特有的行为。

代码示例

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()这个方法,但它们实现的方式不同。汽车是开,飞机是飞。

代码示例

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.kler.cn/a/455724.html

相关文章:

  • uniapp 前端解决精度丢失的问题 (后端返回分布式id)
  • 《机器视觉:开启智能新时代》
  • Python学生管理系统(MySQL)
  • pyQT + OpenCV相关练习
  • Debian12 安装配置 ODBC for GaussDB
  • 【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
  • Linux | Ubuntu零基础安装 nvm 管理nodejs
  • 嵌入式学习-QT-Day02
  • 智能家居常用的无线通信协议及其特点
  • HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行
  • Windows系统上配置eNSP环境的详细步骤
  • vue 前端 用iframe实现单点登录两个不同域名Vue项目相互跳转并且传递Token
  • 如何使用缓存技术提升Python爬虫效率
  • 鸿蒙Next状态管理V2 - @Once初始化用法总结
  • 设计模式之享元模式:看19路棋盘如何做到一子千面
  • 【视觉惯性SLAM:六、图优化库(1):g2o的使用指南】
  • 自动化办公-合并多个excel
  • AI自动化编程:解放双手还是抢夺饭碗?
  • 点击标题滚动到指定模块
  • 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。
  • clickhouse复现修复 结构需要清理 错误 structure need clean
  • 达梦数据守护搭建
  • SpringBoot后端开发常用工具详细介绍——SpringDoc接口文档
  • termux下ubuntu换arm清华源
  • 攻防世界 easyphp
  • RFID智能文件柜:高效安全的档案管理新方案