Java 面向对象编程的三大法宝:封装、继承与多态

简介: 本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。

 目录

一、封装:数据的保护罩

(一)为啥要封装

(二)代码示例

二、继承:代码复用的神器

(一)继承的好处

(二)代码示例

三、多态:灵活多变的编程技巧

(一)多态的魅力

(二)代码示例


宝子们,今天咱来唠唠 Java 中面向对象编程里超级重要的三个概念:封装、继承和多态。这仨就像是编程世界里的魔法咒语,掌握了它们,你的代码就能变得更加灵活、可维护和强大。

一、封装:数据的保护罩

(一)为啥要封装

想象一下,你有一个装满宝贝(数据)的盒子,你肯定不希望别人随便乱动里面的东西,对吧?封装就是干这个事儿的。它把数据和操作这些数据的方法包在一起,只对外暴露一些必要的接口,这样就能保证数据的安全性和完整性。比如说,你有一个代表银行账户的类,账户余额这个数据肯定不能让随便谁都能修改,封装就能帮你控制对余额的访问。

(二)代码示例

class BankAccount {
    // 账户余额,用 private 修饰,这就是把它藏起来,不让外面随便访问
    private double balance;
    // 存款方法,这是对外提供的操作余额的接口
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
            System.out.println("成功存入 " + amount + ",当前余额为 " + balance);
        } else {
            System.out.println("存款金额必须大于 0");
        }
    }
    // 取款方法,也是接口之一
    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
            System.out.println("成功取出 " + amount + ",当前余额为 " + balance);
        } else {
            System.out.println("余额不足或取款金额不正确");
        }
    }
    // 查看余额的方法,这个可以让外界获取余额信息,但不能修改
    public double getBalance() {
        return balance;
    }
}
public class EncapsulationExample {
    public static void main(String[] args) {
        BankAccount myAccount = new BankAccount();
        myAccount.deposit(1000);
        myAccount.withdraw(500);
        // 只能通过 get 方法获取余额,不能直接修改 balance
        System.out.println("当前余额:" + myAccount.getBalance());
    }
}

image.gif

在这个例子里,balanceprivate 修饰,外界无法直接访问和修改它,只能通过 depositwithdrawgetBalance 这些方法来间接操作,这就是封装的体现,是不是很巧妙?

二、继承:代码复用的神器

(一)继承的好处

继承就像是家族遗传,子类可以继承父类的属性和方法,这样就不用重复写很多代码啦。比如说,你有一个 Animal 类,它有一些通用的属性和行为,像名字、年龄和吃东西的方法。然后你又有 Dog 类和 Cat 类,它们都是动物,就可以继承 Animal 类,不用再重新定义那些通用的东西,只需要专注于自己特有的属性和行为,比如狗会摇尾巴,猫会抓老鼠。

(二)代码示例

// 父类 Animal
class Animal {
    private String name;
    private int age;
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // 动物吃东西的方法
    public void eat() {
        System.out.println(name + " 正在吃东西");
    }
    // 这里是 get 和 set 方法,用于访问和修改私有属性
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
// 子类 Dog,继承自 Animal
class Dog extends Animal {
    // 狗特有的行为,摇尾巴
    public void wagTail() {
        System.out.println(getName() + " 正在摇尾巴");
    }
    public Dog(String name, int age) {
        // 调用父类的构造方法初始化父类的属性
        super(name, age);
    }
}
// 子类 Cat,也继承自 Animal
class Cat extends Animal {
    // 猫特有的行为,抓老鼠
    public void catchMouse() {
        System.out.println(getName() + " 正在抓老鼠");
    }
    public Cat(String name, int age) {
        super(name, age);
    }
}
public class InheritanceExample {
    public static void main(String[] args) {
        Dog myDog = new Dog("旺财", 3);
        myDog.eat();
        myDog.wagTail();
        Cat myCat = new Cat("咪咪", 2);
        myCat.eat();
        myCat.catchMouse();
    }
}

image.gif

宝子们看,DogCat 类继承了 Animal 类,复用了 Animal 类的属性和方法,同时又有自己独特的行为,这样代码是不是简洁多了?

三、多态:灵活多变的编程技巧

(一)多态的魅力

多态就像是孙悟空的七十二变,同一个行为,不同的对象可以有不同的表现形式。比如说,动物都有叫的行为,但狗叫是 “汪汪”,猫叫是 “喵喵”。通过多态,我们可以用一个父类的引用指向不同的子类对象,然后调用相同的方法,却能得到不同的结果,这样代码就更加灵活和可扩展啦。

(二)代码示例

// 还是之前的 Animal、Dog 和 Cat 类
// 定义一个方法,参数是 Animal 类型,这样就可以传入 Animal 的子类对象
public static void makeAnimalSound(Animal animal) {
    animal.eat();
    // 通过 instanceof 关键字判断对象的实际类型,然后调用相应的特有方法
    if (animal instanceof Dog) {
        ((Dog) animal).wagTail();
    } else if (animal instanceof Cat) {
        ((Cat) animal).catchMouse();
    }
}
public class PolymorphismExample {
    public static void main(String[] args) {
        Dog myDog = new Dog("大黄", 4);
        Cat myCat = new Cat("小花", 3);
        makeAnimalSound(myDog);
        makeAnimalSound(myCat);
    }
}

image.gif

在这个例子里,makeAnimalSound 方法的参数是 Animal 类型,但我们可以传入 DogCat 的对象,根据对象的实际类型,会执行不同的行为,这就是多态的神奇之处。

宝子们,封装、继承和多态是 Java 面向对象编程的精髓所在,掌握了它们,你就能写出更加优雅、高效、易维护的代码。刚开始可能会觉得有点绕,但多写多练,你一定会爱上这三个编程魔法的!如果有啥不明白的地方,随时回来看看这篇文章,或者在评论区问我哦。

相关文章
|
3天前
|
安全 Java 开发者
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。
|
4天前
|
安全 网络协议 Java
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
|
26天前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
41 3
|
3月前
|
Java 开发者
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
214 63
|
4月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
62 4
|
7月前
|
搜索推荐 Java 编译器
【Java探索之旅】多态:重写、动静态绑定
【Java探索之旅】多态:重写、动静态绑定
46 0
|
Java 程序员 C++
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(3)
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(3)
221 0
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(3)
|
Java 编译器
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(2)
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(2)
166 0
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(2)
|
Java 编译器 数据库
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(1)
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(1)
114 0
java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super(1)

热门文章

最新文章