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日

相关文章

  • Java中断线程的方法

    在Java中,可以通过interrupt()方法来中断线程的执行。这个方法会设置线程的中断标志,标志位表示线程被中断了,但并不意味着线程立即停止运行,线程还需要检查该标志并作出相应的响应。 以下是具体的中断线程的步骤和示例说明: 使用interrupt()方法中断线程 在Java中,可以通过在需要终止的线程上调用interrupt()方法来中断线程。该方法会…

    Java 2023年5月26日
    00
  • Java Web中解决路径(绝对路径与相对路径)问题

    下面将详细讲解Java Web中如何解决路径问题。 什么是路径问题 Java Web开发中常常会出现路径问题,通常包括两种类型:绝对路径和相对路径。 绝对路径是指从根目录开始,一直到需要的文件或目录的路径,例如:C:\my_project\resources\file.txt。 相对路径是指相对于当前文件或项目的路径,例如:./resources/file.…

    Java 2023年5月20日
    00
  • 什么是Java压力测试?

    Java压力测试是运用在Java应用程序中的一种测试方法,它按照一定的逻辑规则并通过多种方式模拟用户的使用场景,从而测试Java应用程序在不同的负载情况下是否能正常运行、是否具有较高的稳定性和可靠性。Java压力测试可以测试Java应用程序的性能,在不同的负载情况下评估其吞吐量、响应时间、并发用户数等关键指标,为Java开发人员提供改善Java应用程序性能的…

    Java 2023年5月11日
    00
  • Sprint Boot @ConditionalOnMissingBean使用方法详解

    @ConditionalOnMissingBean是Spring Boot中的一个注解,它用于根据Spring容器中是否缺少指定的Bean来决定是否启用或禁用某个组件。在使用Spring Boot开发应用程序时,@ConditionalOnMissingBean是非常有用的。本文将详细介绍@ConditionalOnMissingBean的作用和使用方法,并…

    Java 2023年5月5日
    00
  • 详解Spring Boot实战之Rest接口开发及数据库基本操作

    下面为您详细讲解“详解Spring Boot实战之Rest接口开发及数据库基本操作”的完整攻略。 1. 背景介绍 在Web开发中,RESTful API是一种非常流行的架构风格,它能够提供简单、易用、灵活的接口服务。而Spring Boot作为一个现代化的Java Web框架,则能够非常好地实现RESTful API的开发。 本攻略将为您介绍如何使用Spri…

    Java 2023年5月19日
    00
  • Java Web监听器Listener接口原理及用法实例

    下面是针对“Java Web监听器Listener接口原理及用法实例”的完整攻略。 Listener接口原理 Listener是Java Web中用于监听某些事件的接口。它是一种观察者模式,可以用于处理请求和响应中的事件。其原理如下: Listener是一个接口,实现了多种不同类型的监听器。 监听器必须由开发者实现和注册在相应的事件中(例如:初始化、请求、会…

    Java 2023年6月15日
    00
  • JS实现的JSON序列化操作简单示例

    下面我来为你讲解“JS实现的JSON序列化操作简单示例”的完整攻略。 一、JSON序列化简介 JSON序列化是将JavaScript对象转换为JSON字符串的过程,也可以将JSON字符串转换为JavaScript对象。在实际开发中,JSON序列化是很常见的一个操作,尤其是在前后端数据交互时。 二、JSON.stringify方法详解 在JavaScript中…

    Java 2023年5月26日
    00
  • JavaWeb项目音频资源播放实现方法详解

    JavaWeb项目音频资源播放实现方法详解 在JavaWeb项目开发中,如何实现音频资源的播放,是一个比较常见的需求。下面将介绍JavaWeb项目音频资源播放实现方法的详细攻略。 1. 前端实现 在前端页面上,我们可以通过HTML5的audio标签来实现音频资源的播放。 1.1 页面结构 <!doctype html> <html lang…

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