Java基础教程之封装与接口

Java基础教程之封装与接口

封装

封装是指隐藏对象的属性和实现细节,仅对外暴露有限的接口,控制外部访问对象内部的能力。Java中,封装是通过访问控制来实现的。

访问控制符

Java中有四种访问控制符,分别是public、protected、default、private,它们的访问权限从大到小排列。

  • public:不受限制,任何地方都可以访问。
  • protected:同一包内和子类可以访问。
  • default:同一包内可以访问。
  • private:仅类内部可以访问。

示例代码

public class Person {
    private String name;    // 私有化属性name
    private int age;        // 私有化属性age

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

    public void setName(String name) {  // 提供公有set方法,用于修改name属性
        this.name = name;
    }

    public String getName() {   // 提供公有get方法,用于获取name属性
        return name;
    }

    public void setAge(int age) {   // 提供公有set方法,用于修改age属性
        this.age = age;
    }

    public int getAge() {   // 提供公有get方法,用于获取age属性
        return age;
    }
}

在上面的例子中,我们将Person类中的name和age属性私有化,防止外部直接访问。然后提供了公有的set和get方法让外部可以修改和获取属性值,这样就增加了对内部实现的控制,同时也方便了外部的使用。

接口

接口是一种抽象的类型,它定义了一组方法(没有实现),但是没有属性。接口可以被类实现,实现类必须实现接口中的所有方法。接口的作用是定义一种规范,不同的类可以实现相同的接口,使得它们具备了相似的行为模式。

示例代码

interface Flyable {
    void fly();
}

class Plane implements Flyable {
    public void fly() {
        System.out.println("Plane is flying.");
    }
}

class Bird implements Flyable {
    public void fly() {
        System.out.println("Bird is flying.");
    }
}

public class Test {
    public static void main(String[] args) {
        Flyable flyable1 = new Plane();
        Flyable flyable2 = new Bird();

        flyable1.fly();
        flyable2.fly();
    }
}

在上面的例子中,定义了一个接口Flyable,该接口定义了一个方法fly。然后定义了两个实现类Plane和Bird,它们都实现了接口Flyable中的方法fly。最后在Test类中,我们创建了Plane和Bird的实例,并向上转型为Flyable类型,然后调用了fly方法。这样就可以实现了不同类之间相同方法的调用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础教程之封装与接口 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 详解C++编程中运算符的使用

    详解C++编程中运算符的使用 C++是一种面向对象的编程语言,所以运算符在编程中非常重要。运算符可以用来执行各种算术和逻辑操作,使得程序变得更加灵活和高效。本文将详细讲解C++编程中运算符的使用,帮助读者了解各种运算符的使用和一些常见错误的避免方法。 算术运算符 C++中的算术运算符包括加、减、乘、除和取模运算符,它们可以应用于基本数据类型,如整数和浮点数。…

    other 2023年6月27日
    00
  • javascript如何用递归写一个简单的树形结构示例

    如何用递归写一个简单的树形结构示例? 首先需要定义树节点的结构,例如: class Node { constructor(name, children) { this.name = name; this.children = children || []; } } 其中 name 属性表示节点名称,children 表示子节点。如果这个节点没有子节点,chi…

    other 2023年6月27日
    00
  • Windows下使用命令实现文件换行符替换

    当使用不同操作系统或编辑器时,文件的换行符可能会不同。在Windows操作系统下,文件的换行符通常是”\r\n”,而在Unix/Linux系统和macOS中则是”\n”。因此,在进行不同系统之间的文件传输或处理时,可能需要进行换行符的转换。 以下是在Windows下使用命令实现文件换行符替换的完整攻略: 1. 使用Notepad++软件替换文件中的换行符 N…

    other 2023年6月26日
    00
  • Eclipse导入SVN项目的三种方式

    下面是关于Eclipse导入SVN项目的三种方式的完整攻略,包括介绍、步骤和两个示例说明。 介绍 Eclipse是一款常用的Java开发工具,支持集成多种版本控制系统,例如SVN、Git等。在使用Eclipse进行开发时,需要导入SVN项目,以便进行版本控制和协作开发。 本文将介绍Eclipse导入SVN项目的三种方式,包括从SVN服务器导入、从本地文件系统…

    other 2023年5月6日
    00
  • 联想lj2400l硒鼓打印机怎么清零?

    下面是“联想lj2400l硒鼓打印机怎么清零”的完整攻略,包含了过程和示例说明。 1. 了解硒鼓清零的概念 1.1 硒鼓清零的意义 硒鼓清零是一种重置打印机硒鼓寿命的方法,可以使打印机重新对硒鼓容量进行计数,让硒鼓寿命得到重新定义,从而达到节省成本的目的。 1.2 硒鼓清零的限制 硒鼓清零只能用于打印机硒鼓寿命计数器未达到上限的情况下,如果硒鼓寿命计数已经到…

    other 2023年6月27日
    00
  • vue中@click绑定事件点击不生效的原因及解决方案

    针对问题“vue中@click绑定事件点击不生效的原因及解决方案”,我将提供完整的攻略,分为以下几个部分: 原因分析 解决方案 示例说明 1. 原因分析 在Vue中,使用@click绑定事件时,可能由于以下原因导致点击事件不生效: 元素被覆盖或隐藏:如果点击事件绑定的元素被其他元素覆盖或隐藏了,那么点击事件就无法触发。 事件绑定位置错误:有时候我们把@cli…

    other 2023年6月27日
    00
  • uni-appios的threejs本地obj、mtl文件的读取

    简介 在uni-app中,可以使用three.js库来创建3D图形。如果要在iOS设备上使用three.js库,可以使用本地obj和mtl文件来加载3D模型。本攻略将详细讲解如何在uni-app中使用three库加载本地obj和mtl文件。 步骤 下面是在uni-app中three.js库加载本地obj和mtl文件的步骤: 在uni-app项目中安装thre…

    other 2023年5月8日
    00
  • django的使用步骤入门教程(很详细)

    Django的使用步骤入门教程 1. 安装Django 在开始使用Django之前,首先要确保在本地环境中安装了Python。然后,可以通过以下步骤安装Django: 打开终端或命令提示符。 运行以下命令进行Django的安装: pip install django 2. 创建Django项目 完成Django的安装后,可以按照以下步骤创建一个Django项…

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