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日

相关文章

  • .NET Core下使用Kafka的方法步骤

    以下是”.NET Core下使用Kafka的方法步骤”的完整攻略: 1. 确认Kafka的环境 在使用Kafka之前,需要确认本地或服务器上已经安装好了Kafka。可以通过以下方式来确认: 使用命令行的方式确认 在命令行中执行以下命令: bash kafka-topics.sh 如果Kafka已经安装,则会输出Kafka的命令帮助信息。 检查Kafka的监听…

    Java 2023年5月20日
    00
  • Jenkins+maven持续集成的实现

    好的!下面就详细讲解一下“Jenkins+maven持续集成的实现”的完整攻略。 1. 简介 Jenkins是一个流行的开源持续集成工具,用于构建、自动化测试、部署、监控软件项目。而Maven则是一个流行的Java项目构建工具。利用Jenkins和Maven进行持续集成可以大大提高软件开发的效率和质量。 2. 实现过程 2.1 安装Jenkins 首先需要在…

    Java 2023年5月20日
    00
  • Mybatis各种查询接口使用详解

    Mybatis各种查询接口使用详解 Mybatis是一款优秀的持久层框架,提供了不同的查询接口来满足各种复杂查询需求。本文将详细讲解Mybatis各种查询接口的使用方法。 基本查询 select 使用select查询数据非常简单,只需要在Mapper接口定义对应的方法,返回值为查询结果即可。 <!– Mapper.xml –> <sel…

    Java 2023年5月19日
    00
  • 详解Spring框架入门

    下面我将为您详细讲解“详解Spring框架入门”的完整攻略。 1. 什么是Spring框架 Spring框架是一个用于Java应用程序开发的开源框架。它最初由Rod Johnson在2002年创建,旨在提供一种允许Java程序员开发企业级应用程序的框架。Spring框架基于Java语言,使用IoC(Inversion of Control)和AOP(Aspe…

    Java 2023年5月20日
    00
  • Java面向对象程序设计:继承,多态用法实例分析

    Java面向对象程序设计:继承,多态用法实例分析 简介 面向对象程序设计是Java中最重要的编程思想。其中继承和多态是面向对象程序设计中的两大特性。继承和多态的运用可以对代码架构做到高度的灵活和可维护性,是我们编写高质量代码的关键。 继承 继承是Java中面向对象程序设计的核心概念之一。继承可以使我们的代码重用和复用,提高编程效率。在Java中一个类可以继承…

    Java 2023年5月26日
    00
  • java中url汉字编码互相转换实例

    下面是“Java中URL汉字编码互相转换实例”的完整攻略: 1. URL编码和解码 在Java中,使用java.net.URLEncoder类可以对URL进行编码,而使用java.net.URLDecoder类可以对URL进行解码。这两个类的使用方法类似,下面是一个示例: import java.net.URLEncoder; import java.net…

    Java 2023年5月20日
    00
  • 基于SpringMVC入门案例及讲解

    以下是关于“基于SpringMVC入门案例及讲解”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用的Java Web开发框架,其核心思想是基于MVC模式来实现Web应用程序开发。本攻略将详细讲解基于SpringMVC入门案例及讲解,包括SpringMVC的基本概念、配置方法以及一个示例。 2. SpringMVC的基本概念 以下是Sp…

    Java 2023年5月16日
    00
  • hibernate 三种状态的转换

    Hibernate是一个Java语言的ORM(Object-Relational Mapping)框架,用来方便地进行数据库操作。在Hibernate中,每一个对象都有它自己的状态,状态对Hibernate来说非常重要。Hibernate中的实体状态一共有三种,他们是瞬时态、持久态、游离态,下面让我们详细来解释一下这三种状态。 瞬时态 瞬时态是指,一个对象未…

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