【通俗易懂】面向对象三大特性:封装、继承、多态 | 代码与生活比喻详解

博主也是刚接触代码一年的小白学习至今发现很多初学者会被封装、继承、多态这些概念绕晕。然后老师的讲解多少没有用比喻的方法去让我们更好理解,今天,我将用代码示例+生活比喻的方式,在这篇博客进行叙述,,哪里说的不对多多包容.

一、封装:你的隐私需要保护

1. 技术定义(就是书上那种又臭又长的定义)

封装(Encapsulation)是指将数据(属性)和行为(方法)捆绑在一起,并隐藏内部实现细节,仅暴露必要的接口。

2. 代码示例

public class 类名 {
    private double 属性; // 私有属性,外部无法直接访问

    // 公开方法供外部操作
    public void 方法() {
        方法体
    }

    public double get属性() { //我这里写的属性就是上面加粗的那个,这样写是为了方便读者理解
        return 属性;
    }
}

以下是完整示例代码:

public class BankAccount {
    private double balance; // 私有属性,外部无法直接访问

    // 公开方法供外部操作
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    public double getBalance() {
        return balance;
    }
}

3. 生活比喻

我们可以把对象想象成一个自动售货机

我们买东西不需要知道内部如何计算找零、如何出货(隐藏实现)

只需通过投币口和按钮(公开接口)与它交互

如果直接拆开机器改钱箱(直接访问私有属性),会导致严重后果!

4. 为什么要封装?

防止外部随意修改数据

降低模块间的耦合度(也就是那句高内聚,低耦合)

便于维护(内部修改不影响外部调用)

二、继承:龙生龙,凤生凤

1. 技术定义

继承(Inheritance)允许子类获得父类的属性和方法,并可以扩展或重写。

2. 代码示例

class Animal {
    void eat() {
        System.out.println("吃东西");
    }
}

class Cat extends Animal {
    void meow() {
        System.out.println("喵喵叫");
    }
}

// 使用
Cat cat = new Cat();
cat.eat();  // 继承自Animal
cat.meow(); // 自己的方法

没有意外的话,代码就会输出吃东西喵喵叫

3. 生活比喻

就像家族遗传

孩子继承父母的基本特征(如眼睛颜色)

但孩子可以有自己独特的能力(如会弹钢琴)

也可以"覆盖"父母的行为(父母说方言,孩子说普通话)当然这里就是方法重写了

4. 继承的注意事项

不要过度继承,父类可以有多个子类,但是子类只能有一个父类,就好比一个男的可以生多个孩子,孩子只有一个爸爸.

三、多态:同一个动作,不同表现

1. 技术定义

多态(Polymorphism)指同一操作作用于不同对象时,可以有不同的解释和执行结果。

2. 代码示例

interface Shape {
    void draw();
}

class Circle implements Shape {
    public void draw() {
        System.out.println("画一个圆形");
    }
}

class Square implements Shape {
    public void draw() {
        System.out.println("画一个方形");
    }
}

// 测试
Shape s1 = new Circle();
Shape s2 = new Square();
s1.draw(); // 输出"画一个圆形"
s2.draw(); // 输出"画一个方形"

这里的implements是实现接口的意思,实现interface Shape这个接口

3. 生活比喻

就像"按下F键"在不同场景:

在游戏中:可能是开火(Fire)

在Word中:可能是查找(Find)

在资源管理器:可能是刷新(Fresh)

相同的消息(按下F键),不同的行为

4. 多态的实现方式

方法重写(Override)

接口实现

抽象类和抽象方法

综合对比表

特性技术要点生活比喻主要优势
封装隐藏细节,暴露接口自动售货机安全性,易维护
继承子类继承父类特性家族遗传代码复用,扩展性
多态同一接口不同实现按键的多重含义程序灵活性,可扩展性

这些就是我总结出来的封装、继承、多态的通俗讲解

希望对你未来的学习有帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值