Java 新手入门:Java 封装、继承、多态详解

简介: Java 新手入门:Java 封装、继承、多态详解

今天想跟大家聊聊 Java 编程中非常重要的三个概念:封装、继承、多态。

它们可是面向对象编程(OOP)的精髓所在, 掌握了它们,你就掌握了 OOP 的半壁江山!

1. 封装 - 我的数据我做主

专业解释:封装就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。

是不是有点抽象?没关系,我们来举个栗子:

想象一下,你正在使用一台电视机。你只需要知道如何使用遥控器上的按钮来开关机、切换频道、调节音量,而不需要了解电视机内部复杂的电路结构和工作原理。

电视机内部的电路和工作原理就是被隐藏的属性和实现细节,而遥控器上的按钮就是对外提供的公共访问方式。

// 电视机类
public class Television {
   // 私有属性:频道
   private int channel;
 
   // 公共方法:切换频道
   public void changeChannel(int newChannel) {
       if (newChannel > 0 && newChannel < 100) {
           this.channel = newChannel;
       }
   }
}

在上面的代码中,channel 属性被声明为 private,这意味着它只能在 Television 类内部访问。而 changeChannel 方法被声明为 public,这意味着它可以在 Television 类外部访问。

通过封装,我们可以:

  • 保护数据,防止外部代码直接访问和修改对象的内部数据。
  • 提高代码的复用性,将数据和操作封装在一起,方便其他代码调用。
  • 降低代码的耦合度,修改对象的内部实现不会影响外部代码的使用。

2. 继承 - 代码复用的大招

专业解释:继承允许我们创建一个新类(子类),它继承了现有类(父类)的属性和方法,并且可以添加新的属性和方法。

是不是还是有点懵?别着急,我们继续来举个栗子:

假设我们要设计一个动物园管理系统,需要定义各种动物,比如老虎、狮子、猴子等等。它们都有一些共同的特征,比如名字、年龄、体重等等,同时也有一些独特的行为,比如老虎会吼叫,猴子会爬树。

// 父类:动物
public class Animal {
    public String name;
    public int age;
    public double weight;
 
    public void eat() {
        System.out.println("动物在吃东西");
    }
}
 
// 子类:老虎
public class Tiger extends Animal {
    public void roar() {
        System.out.println("老虎在吼叫");
    }
}
 
// 子类:猴子
public class Monkey extends Animal {
    public void climb() {
        System.out.println("猴子在爬树");
    }
}

在上面的代码中,Tiger 和 Monkey 类都继承了 Animal 类,因此它们都拥有了 name、age、weight 和 eat 方法。同时,Tiger 类还新增了 roar 方法,Monkey 类还新增了 climb 方法。

通过继承,我们可以:

  • 提高代码的复用性,避免重复编写相同的代码。
  • 增强代码的可扩展性,方便添加新的功能。

3. 多态 - 同一个方法,不同实现

专业解释: 多态是指同一个方法调用,可以根据对象的不同类型执行不同的操作。

我知道,你可能已经开始头大了🤯。别怕,我们再来举个栗子🌰:

还是动物园的例子,不同种类的动物发出声音的方式不同,老虎会吼叫,猴子会吱吱叫。

// 父类:动物
public class Animal {
    public void makeSound() {
        System.out.println("动物发出声音");
    }
}
 
// 子类:老虎
public class Tiger extends Animal {
    @Override
    public void makeSound() {
        System.out.println("老虎在吼叫");
    }
}
 
// 子类:猴子
public class Monkey extends Animal {
    @Override
    public void makeSound() {
        System.out.println("猴子在吱吱叫");
    }
}
 
public class Main {
    public static void main(String[] args) {
        Animal tiger = new Tiger();
        Animal monkey = new Monkey();
 
        tiger.makeSound(); // 输出:老虎在吼叫
        monkey.makeSound(); // 输出:猴子在吱吱叫
    }
}

在上面的代码中,Tiger 和 Monkey 类都重写了父类 Animal 的 makeSound 方法。当我们调用 tiger.makeSound() 时,程序会执行 Tiger 类中定义的 makeSound 方法,输出 "老虎在吼叫"。同样,当我们调用 monkey.makeSound() 时,程序会执行 Monkey 类中定义的 makeSound 方法,输出 "猴子在吱吱叫"。

这就是多态的魅力,同一个方法调用,可以根据对象的不同类型执行不同的操作。

通过多态,我们可以:

  • 提高代码的灵活性,允许程序在运行时根据对象的实际类型执行不同的操作。
  • 增强代码的可扩展性,方便添加新的功能。

总结

今天我们学习了 Java 中的封装、继承和多态三大特性,它们是面向对象编程的基石,掌握了它们,你就能够写出更加优雅、高效、易于维护的代码。

希望这篇文章能够帮助你更好地理解 Java 中的封装、继承和多态,在编程的道路上越走越远!

相关文章
|
25天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
39 3
|
4天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
10天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
16天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
54 5
|
14天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
29 1
|
20天前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
43 3
|
22天前
|
Java
Java中的多线程编程:从入门到精通
本文将带你深入了解Java中的多线程编程。我们将从基础概念开始,逐步深入探讨线程的创建、启动、同步和通信等关键知识点。通过阅读本文,你将能够掌握Java多线程编程的基本技能,为进一步学习和应用打下坚实的基础。
|
23天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
16 3
|
23天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第19天】本文介绍了Java编程中重要的数据结构——Map,通过问答形式讲解了Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的使用和性能优化技巧,适合初学者和进阶者学习。
40 4
|
23天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
30 2