【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 日

相关推荐

  • 深入解析Java中的嵌套类机制

    探索Java嵌套类的奥秘 📚📚本文将系统性地介绍Java嵌套类的核心概念、应用场景及具体实现方式,帮助开发者全面掌握这一重要特性。内容导航1. 嵌套类基本概念2. 嵌套类的优势分析3. 嵌套类的实践应用🍇实例成员嵌套类🍈类静态嵌套类🍊方法局部嵌套类🍒匿名实现类📚要点回顾 1. 嵌套类基本概念 🥦🥦🥦当某个对象需要包含具有完整结构的辅助对象时,而这些辅助对象仅…

    2025 年 5 月 18 日
    8700
  • 成长路上的自信与经验积累

    毕业之初,繁体字曾让我感到困扰。虽然大陆普遍使用简体字,但有人曾夸大其词地宣称这是文化断层。实际上,繁体字蕴含深意,简体字则更易普及。在文盲率较高的年代,简化文字是为了提升全民文化水平,助力经济发展。为了生存,我们不得不克服重重困难,南下谋生。从广州到深圳的转变,让我感触良多。2016年6月毕业后,我与校园生活告别。广州作为”羊城”,生活成本与深圳的主要差距…

    未分类 2025 年 5 月 18 日
    7500
  • Java毕业设计选题:325基于SSM+Jsp的高校学生社团管理系统

    开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 系统展示 系统首页 用户注册 用户登录 后台首页 社团公告 留言信息 社团活动 摘要 校园…

    2024 年 12 月 28 日
    30700
  • 【JVM】使用 IntelliJ IDEA 进行 Java 内存分析

    使用 IntelliJ IDEA 进行 Java 内存分析 前言 内存管理对于 Java 应用程序的性能至关重要,特别是在处理复杂的应用程序时,内存泄漏或内存溢出等问题可能导致性能下降甚至程序崩溃。在遇到这些问题时,内存分析工具能够帮助开发者快速定位和解决问题。IntelliJ IDEA 提供了内置的内存分析工具,可以方便地捕获并分析 Java 应用程序的内…

    未分类 2024 年 12 月 31 日
    72500
  • IDEA 2024.1.2 激活破解指南,附IDEA激活码+工具,亲测有效

    IntelliJ IDEA 是一个广受认可的 Java 集成开发环境,被认为是最好的 Java 开发工具之一。本文将分享如何通过脚本免费激活 IDEA 及其他 Jetbrains 全家桶工具,支持 2021 及以上版本,包括最新版本。 一、下载并安装 IDEA 首先,前往 JetBrains 官网下载最新版本的 IDEA。安装过程十分简单,按照提示一步步进行…

    未分类 2024 年 7 月 15 日
    1.0K00

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信