【Java 学习】面向程序的三大特性:封装、继承、多态

引言

在面向对象编程的世界里,封装、继承和多态构成了核心的三大特性。本文将深入探讨这些概念,并通过Java代码示例来阐释它们的重要性和实际应用。

1. 封装

1.1 什么是封装呢?

封装是一种隐藏对象的内部状态和复杂性,只对外暴露有限接口的设计原则。就像我们日常使用的电子产品,它们将复杂的内部结构封装起来,只展示用户需要操作的部分。

封装示意图
封装示意图

在Java中,封装通过访问限定符实现,它控制着类成员的可见性和访问级别。

1.2 访问限定符

范围 private default protected public
同一包内
同一包不同类
不同包子类
不同包非子类
  • public:对所有类可见。
  • protected:对同一包内的类和所有子类可见。
  • default:对同一包内的类可见。
  • private:仅对定义它的类可见。

1.3 使用封装

下面是一个Watch类的示例,展示了如何使用封装来隐藏和保护类的内部状态。

package cn.nyist.watch;

public class Watch {
    private String machine; // 动力来源
    public String time; // 时间
    String brand; // 品牌,default

    public Watch(String machine, String time, String brand) {
        this.machine = machine;
        this.time = time;
        this.brand = brand;
    }

    public void seeTime() {
        System.out.println("时间");
    }

    private void debug() {
        System.out.println("调试零件");
    }
}

Watch类中,main函数模拟了手表的创造者,可以访问所有成员:

public static void main(String[] args) {
    Watch w = new Watch("机械", "12:00", "劳力士");
    System.out.println(w.machine);
    System.out.println(w.time);
    System.out.println(w.brand);
    w.seeTime();
    w.debug();
}

而在Buy类中,模拟了手表的购买者,只能访问公共成员:

package cn.nyist.watch;

public class Buy {
    public static void main(String[] args) {
        Watch w = new Watch("机械", "12:00", "劳力士");
        System.out.println(w.time); // time是public属性
        System.out.println(w.brand); // brand是default属性
        w.seeTime(); // seeTime是public属性
    }
}

在其他包中的People类,只能访问Watch类的公共成员:

public class People {
    public static void main(String[] args) {
        Watch w = new Watch("机械", "12:00", "劳力士");
        System.out.println(w.time); // time是public属性
        w.seeTime(); // seeTime是public属性
    }
}

2. 继承

2.1 为什么要有继承?

继承允许我们创建新的类,这些新类可以继承现有类的属性和方法,从而避免代码冗余,并实现代码复用。

package cn.nyist.animal;

public class Dog {
    public String name;
    public String color;
    protected int age;

    public Dog(String name, String color, int age) {
        this.name = name;
        this.color = color;
        this.age = age;
    }

    public void eat() {
        System.out.println("吃饭~");
    }

    public void sleep() {
        System.out.println("睡觉~");
    }

    public void bark() {
        System.out.println("汪汪~");
    }
}

```java
package cn.nyist.animal;

public class Cat {
public String name;
public String color;
protected int age;

public Cat

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4552.html

(0)
LomuLomu
上一篇 2024 年 12 月 27 日
下一篇 2024 年 12 月 27 日

相关推荐

  • PostgreSQL 数据库的启动与停止管理

    title: PostgreSQL 数据库的启动与停止管理date: 2024/12/28updated: 2024/12/28author: cmdragon excerpt:作为一个强大的开源关系数据库管理系统,PostgreSQL在众多应用场景中发挥着关键作用。在实际使用过程中,对于数据库的启动和停止操作至关重要。这不仅关系到数据库的正常运行,也直接影…

    2025 年 1 月 6 日
    40700
  • 【IDEA永久激活】IntelliJ IDEA 2024破解教程及永久激活码

    IntelliJ IDEA 是广受欢迎的顶级 Java 集成开发环境之一。本教程将介绍如何使用脚本免费激活 IntelliJ IDEA,包括 2021 年及以后的版本。 一、安装 IntelliJ IDEA 请访问 JetBrains 官方网站,下载 IntelliJ IDEA 的最新版本,并按照指示完成安装。 二、激活工具下载 Windows 用户:请注意…

    未分类 2024 年 7 月 9 日
    2.4K00
  • 【Java疑难解析】深入解决java.lang.UnsatisfiedLinkError异常

    🎉🎉🎉诚挚欢迎各位技术爱好者莅临!在这里,我们不仅能交流技术心得,更能碰撞思维火花,共同构建开放互助的学习社区。期待与您携手在这个数字空间里共同进步,突破技术瓶颈。🎉🎉🎉🌟🌟 诚邀订阅本专栏 🌟🌟内容导航问题概述异常现象解析1.1 典型错误案例1.2 异常根源探究1.3 处理方案规划解决方案详解2.1 方案A:验证本地库文件完整性2.2 方案B:分析库文件依…

    2025 年 5 月 18 日
    32900
  • Java开发工具包(JDK)获取与安装指南

    内容导航Oracle官方下载平台Windows系统安装Ubuntu系统配置1.JDK环境部署2.版本信息确认移除OpenJDKCentOS系统1.获取JDK安装包2.执行安装操作3.环境验证 Oracle官方下载平台 访问地址:Java Downloads | Oracle Windows系统安装 运行下载的可执行文件,选择目标安装路径,按照提示完成整个安装…

    2025 年 5 月 13 日
    27800
  • vue3 + pnpm 打造一个 monorepo 项目

    单一仓库与多仓库架构 单一仓库(Monorepo)架构是一种策略,它允许我们在一个单一的仓库中管理多个项目或包;而多仓库(Multirepo)架构则是将每个项目分别存放在不同的仓库中。 在Monorepo结构中,除了根目录下有一个公共的package.json文件外,每个子项目(sub-package)也有自己的package.json文件。 子项目之间可以…

    未分类 2024 年 12 月 24 日
    50100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信