【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征

第24题:Java面向对象有哪些特征

📚 回答:

  • 核心特征
    Java面向对象有三大特征:封装继承多态
1. 封装
  • 定义

    封装是将对象的属性和行为隐藏起来,只对外提供访问接口。简单来说,就是"把复杂的事情藏起来,只暴露简单的使用方式"。

  • 实现方式

    • 使用private修饰符隐藏类的属性或方法。
    • 提供public的getter和setter方法来访问这些属性。
  • 好处

    • 提高代码的安全性:外部无法直接修改内部数据。
    • 提升代码的可维护性:修改内部实现不会影响外部调用者。

    💡 代码示例

    以下代码展示了封装的基本实现:

java 复制代码
class Person {
    private String name; // 隐藏属性
    private int age;

    // 提供公共访问接口
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
2. 继承
  • 定义

    继承是指一个类(子类)可以复用另一个类(父类)的功能,并在此基础上扩展新的功能。

  • 实现方式

    使用extends关键字实现继承关系。

  • 好处

    • 减少重复代码:子类可以直接复用父类的属性和方法。
    • 提高代码的扩展性:子类可以在不修改父类的情况下添加新功能。

    💡 代码示例

    以下代码展示了继承的基本实现:

java 复制代码
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking");
    }
}
3. 多态
  • 定义

    多态是指同一个方法在不同对象中表现出不同的行为。它的三个要素是:继承重写父类引用指向子类对象

  • 实现方式

    • 子类重写父类的方法。
    • 使用父类引用指向子类对象,调用方法时执行的是子类的实现。
  • 好处

    • 提高代码的灵活性:同样的方法调用可以根据具体对象表现出不同的行为。
    • 实现"开闭原则":对扩展开放,对修改关闭。

    💡 代码示例

    以下代码展示了多态的基本实现:

java 复制代码
class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("Cat meows");
    }
}

// 测试多态
public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Dog(); // 父类引用指向子类对象
        Animal animal2 = new Cat();

        animal1.sound(); // 输出 "Dog barks"
        animal2.sound(); // 输出 "Cat meows"
    }
}

💡 面试官视角

  • 面试官可能会问"多态的应用场景是什么?"答:比如工厂模式、策略模式等设计模式都依赖多态实现灵活扩展。
  • 面试官可能会追问"为什么需要重写?"答:重写是为了让子类能够根据自身需求重新定义父类的行为,从而实现多态。

📌 专栏 :大白话说Java面试题 --- 01-Java基础篇

相关推荐
lazy H31 分钟前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
Scott9999HH8 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔8 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GetcharZp9 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
码智社9 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海9 小时前
python 列表、元组、集合和字典
开发语言·python
触底反弹9 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
萧瑟余晖10 小时前
JDK 26 新特性详解
java·开发语言
马优晨11 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
醇氧11 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展