JAVA面向对象 封装原理及实例解析

JAVA面向对象 封装原理及实例解析

Java的面向对象编程中,封装是一种非常重要的原理。封装的目的是隐藏类的实现细节,同时提供公共接口以便其他代码可以使用类的功能。这可以让代码更加具有可维护性、可扩展性和灵活性。

封装的原理

封装的原理是将数据和行为组合成一个单独的实体,并将其保护起来,不允许外部代码直接访问这个实体。在Java中,我们可以使用访问修饰符来实现这一点。Java中有四种访问修饰符,它们分别是private、package-private、protected和public。其中,private修饰符将数据和行为封装在类中,只允许类内部的代码进行访问。package-private修饰符是指没有显式地指定访问修饰符,这样的成员只能在同一个包内部访问。protected修饰符可以让子类访问其父类的成员,也可以在同一个包内访问。public修饰符可以让任何代码都可以访问这个成员。

封装的实例解析

以下是两个示例,它们演示了如何在Java中使用封装。

示例1:

public class Student {

    private String name;
    private int age;

    // 获取姓名
    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;
    }
}

public class Main {

    public static void main(String[] args) {

        Student stu = new Student();

        // 调用公共方法
        stu.setName("Alice");
        stu.setAge(18);

        // 访问私有成员
        System.out.println("My name is " + stu.getName() + ", I'm " + stu.getAge() + " years old.");
    }
}

在这个示例中,我们定义了一个Student类,包含了两个私有成员变量name和age,并提供了公共的访问方法getName()和getAge(),以及设置方法setName()和setAge()。这些公共方法可以允许其他代码获取和设置这些成员变量的值,而私有成员变量则被封装在类内部,其他代码无法直接访问它们。

示例2:

public abstract class Animal {

    private String name;

    public Animal(String name) {
        this.name = name;
    }

    // 获取名称
    public String getName() {
        return name;
    }

    // 发出声音
    public abstract void makeSound();
}

public class Dog extends Animal {

    public Dog(String name) {
        super(name);
    }

    // 重写 makeSound() 方法
    @Override
    public void makeSound() {
        System.out.println("The dog " + getName() + " is barking.");
    }
}

public class Main {

    public static void main(String[] args) {

        Dog d = new Dog("Bob");

        // 调用 makeSound() 方法
        d.makeSound();
    }
}

在这个示例中,我们定义了一个Animal抽象类,其中含有一个私有成员变量name,并实现了公共访问方法getName()和抽象方法makeSound()。这个抽象方法在子类中被重写来发出声音。子类Dog继承了Animal类,并重写了makeSound()方法。

在Main类中,我们实例化了一个Dog对象,并调用了makeSound()方法。由于Animal类中的name成员被声明为私有的,它不能被直接访问,但通过公共方法getName()来获取该属性的值,也实现了封装的目的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA面向对象 封装原理及实例解析 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • eclipse配置tomcat开发Dynamic Web Project环境图解

    下面我将详细讲解 “eclipse配置tomcat开发Dynamic Web Project环境图解”的完整攻略: 一、前置条件 在进行eclipse配置tomcat开发Dynamic Web Project环境前,需要确保你已经完成以下几个步骤: 安装eclipse,推荐使用最新版本; 安装tomcat,并且成功启动tomcat服务; 安装Java SDK…

    Java 2023年6月2日
    00
  • Java读写.properties文件解决中文乱码问题

    下面是我为您提供的Java读写.properties文件解决中文乱码问题的攻略。 1. 问题描述 Java读写.properties文件时,当文件中包含中文时,可能会出现中文乱码问题,这给读取文件内容和使用时带来不便。 2. 解决方案 Java读写.properties文件时,可以采用以下两种方式解决中文乱码问题: 2.1 使用UTF-8编码方式 在读写文件…

    Java 2023年5月20日
    00
  • 深入学习java8 中的CompletableFuture

    深入学习Java8中的CompletableFuture攻略 什么是CompletableFuture CompletableFuture是Java8中新增加的一个类,实现了Future的所有特性,并提供了强大的异步编程能力。CompletableFuture可以让你像写同步代码一样写异步代码,大幅度提高代码的可读性和可维护性。 CompletableFut…

    Java 2023年5月26日
    00
  • 详解MyBatis工作原理

    详解MyBatis工作原理 MyBatis是一个流行的Java持久层框架,它通过将Java对象映射到数据库记录来操作数据库。本文将详细讲解MyBatis运作的原理。 MyBatis的三大组件 MyBatis框架主要由三个核心组件组成: SqlSessionFactoryBuilder:用于创建SqlSessionFactory。 SqlSessionFact…

    Java 2023年5月20日
    00
  • 30基于java的酒店管理系统设计与实现

    本章节给给大家介绍一个简单的基于java的酒店管理系统设计与实现。 系统概要 以往的酒店管理系统相关信息管理,都是工作人员手工统计。这种方式不但时效性低,而且需要查找和变更的时候很不方便。随着科学的进步,技术的成熟,计算机信息化也日新月异的发展,如今计算机已经进入了人类社会发展的各个领域,并且发挥着十分重要的作用。本系统充分利用网络的便捷,在工作效率上,得到…

    Java 2023年5月8日
    00
  • 详解Java的编译执行与解释执行

    Java是一种编译型语言,Java源文件在编译时会被编译成Java字节码文件,在Java虚拟机上执行。此时,Java bytecode是被解释执行的。Java程序的执行过程可以被分为两个阶段:编译阶段和运行阶段。 编译阶段 Java源文件在编译时会被编译器编译成特定的字节码文件(.class文件),字节码文件包含了代码经过编译器编译后的中间表达形式。以下是使…

    Java 2023年5月20日
    00
  • mall整合SpringSecurity及JWT实现认证授权实战

    来分享一下“mall整合SpringSecurity及JWT实现认证授权实战”的完整攻略。 1. 环境准备 要完成该攻略,首先需要准备好以下环境: JDK 1.8+ Maven 3.x IntelliJ IDEA 2019.2+(或其他任意IDE) 2. 创建maven项目 使用maven创建一个空白的Spring Boot项目,并引入必要的依赖,包括Spr…

    Java 2023年5月20日
    00
  • java eclipse 中文件的上传和下载示例解析

    Java Eclipse 文件上传和下载说明文档 介绍 在Java程序中,文件的上传和下载是一项重要的功能。Eclipse提供了简单而强大的方式来实现这两个功能。本文将介绍Eclipse中如何通过Java编写代码来实现文件上传和下载,并提供两个示例来帮助您更好地理解这些功能。 文件上传 在Eclipse中,文件上传可以使用Apache Commons Fil…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部