广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java面向对象的封装你了解吗
  • 284
分享到

Java面向对象的封装你了解吗

2024-04-02 19:04:59 284人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录面向对象思想之封装什么是封装呢?封装的好处意义getter方法和setter方法toString方法总结:面向对象思想之封装 或许大家都听说过java是纯面向对象语言,面向对象思

面向对象思想之封装

或许大家都听说过java是纯面向对象语言,面向对象思想也就是我们常说的OOP,我们听说最多的思想就是继承,封装,多态,今天我们来讲一讲封装。

什么是封装呢?

封装就是一种将数据和操作数据的方法进行有机结合,一种函数抽象类的接口实现了对细节的封装和隐藏,使得我们只需要调用对外开放的公共接口去实现与对象的交互。我们可以把封装理解为一种保护的屏障,需要一些严格的接口进行控制,我们可以修改自己实现类的内部结构的代码,但是不可以修改那些公共接口。这就提供更好的安全性。

封装的好处意义

  • 好的封装能够减少耦合度
  • 能够对成员变量更精准的控制
  • 实现对细节的封装和隐藏,使得更具有安全性。
  • 可以修改类的内部代码,不用修改那些公共的接口

讲到封装那必然讲到关键字private也就是访问修饰限定符。

回忆一下我们见过哪些访问修饰限定符呢?有public ,还有成员变量什么也不加的默认权限英文是default,还有就是我们今天要讲解的private,下一篇文章会讲解protected。

那private到底有什么用处呢?

我们在来回忆一下上篇文章讲过的类和对象,下面我会创建一个学生类。

//创建一个学生类
class Student {
    public String name;//学生姓名
    public int age;//学生年龄
    public String sex;//学生性别
    public double score;//学生分数
    public void sleep() {
        System.out.println("我要睡觉了!!!");
    }
    public void eat() {
        System.out.println("我要干饭了!!!");
    }
    public void exam() {
        System.out.println("我要考试了!!!");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();//利用new关键字实例化一个对象
        student.age = 19;
        student.name = "厚积薄发";
        student.score = 99.9;
        student.sex = "男";
    }
}

以上的代码我们将这个学生成员变量分别赋值。这样写会不会有什么不足呢?

想一想,如果我们每次要定义一个学生对象,每次都要这样赋值会不会有点太麻烦?今天我们讲到封装就会让它更简单一些。请看下面代码:

class Student {
    private String name;//学生姓名
    private int age;//学生年龄
    private String sex;//学生性别
    private double score;//学生分数
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("厚积薄发");
        System.out.println(student.getName());
    }
}

根据封装的概念我是不是可以给它封装成一个公共的接口然后调用。

好接下来分析一下这个代码:

 所以,我们在成员变量前面加上private修饰使得成员变量只能在类的内部访问,不能在类的外部访问,然后我们实现了setName getName方法,调用者两个接口就可以进行初始化和返回值操作,更好地体现了封装性。

getter方法和setter方法

为了更方便的调用这些接口,idea会为我们提供了这些接口,我们通常情况下把这些方法叫做getter方法和setter方法。只要我们需要我们就可以调用这些共有的getter方法和setter方法。

IDEA快捷键:Alt + insert

class Student {
    private String name;//学生姓名
    private int age;//学生年龄
    private String sex;//学生性别
    private double score;//学生分数
    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 String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public void sleep() {
        System.out.println("我要睡觉了!!!");
    }
    public void eat() {
        System.out.println("我要干饭了!!!");
    }
    public void exam() {
        System.out.println("我要考试了!!!");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();//利用new关键字实例化一个对象
        student.setName("厚积薄发");
        student.setAge(19);
        student.setScore(99.9);
        student.setSex("male");
        System.out.println(student.getName());
        System.out.println(student.getAge());
        System.out.println(student.getScore());
        System.out.println(student.getSex());
    }
}

toString方法

此外,我们每个成员变量都要自己实现一遍打印操作,没错IDEA编译器又为我们提供了一个方法,这个方法叫做toString方法,快捷键是 Alt +insert然后选择toString方法。

 我们直接打印对象的引用就可以调用toString方法.

有同学就会问为什么呢?

这就得需要我们看一看println的源码是怎么实现的了。

我们按住ctrl 点进println这个方法

 我们通过源码就可以发现,println会调用toString方法,如果定义了toString方法,那他就调用toString方法,如果没有调用他就会打印:

 eg:

快捷键: Alt + insert  选择constructor

总结:

private关键字:利用private修饰的成员变量和方法只能在本类中访问,如果在外部访问可以调用公有的setter方法和getter方法。

封装的优点:减少代码的耦合性    , 可以自由修改自己的内部类,不用修改公有地接口 ,隐藏信息实现细节,更精准的控制成员变量。

要记住并且运用并且调用这些公共的接口:getter方法和setter方法 还有toString方法以及 构造方法。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

--结束END--

本文标题: Java面向对象的封装你了解吗

本文链接: https://www.lsjlt.com/news/144165.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java面向对象的封装你了解吗
    目录面向对象思想之封装什么是封装呢?封装的好处意义getter方法和setter方法toString方法总结:面向对象思想之封装 或许大家都听说过java是纯面向对象语言,面向对象思...
    99+
    2022-11-13
  • JavaScript面向对象中的封装和继承你了解吗
    目录1、面向对象1、封装2、原型对象3、继承总结1、面向对象 【三大显著特征】: 封装、继承、多态 1、封装 【解释】: 封装的本质就是将有关联的代码组合在一起。...
    99+
    2022-11-13
  • Python面向对象编程之封装的艺术你了解吗
    目录1.面向对象编程 1.1OOP特点1.2OOP基本概念2.Python实现OOP2.1分析问题2.2类设计语法2.3创建对象语法3.OOP的封装性3.1广义角度:无处不...
    99+
    2022-11-13
  • JavaScript的面向对象你了解吗
    目录1. 面向对象编程介绍1.1 两大编程思想1.2 面向过程编程 POP(Process - oriented - programming)1.3 面向对象编程 OOP(Objec...
    99+
    2022-11-13
  • java面向对象——封装
    概述面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理...
    99+
    2021-02-06
    java入门 java 面向对象 封装
  • Java面向对象如何封装
    这篇文章主要讲解了“Java面向对象如何封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java面向对象如何封装”吧!1.认识封装简单的一句话就是套壳屏蔽细节。比如说一部手机,里面有电池,...
    99+
    2023-06-30
  • Java 面向对象 之 封装方法
    转载于 : http://www.verejava.com/id=16992728331734 public class Encapsulation {public static&...
    99+
    2023-06-02
  • Java面向对象的封装特征深度解析
    目录面向对象三大特征封装private关键字——实现类封装访问器方法和更改器方法包——类的集合导入包从人的角度理解包不加访问权限——实现包封装总结在上一篇文章中,我们了解了面向对象的...
    99+
    2022-11-12
  • Java全面分析面向对象之封装
    目录什么是封装呢封装的好处意义getter方法和setter方法toString方法面向对象封装之包自定义包什么是封装呢 封装就是一种将数据和操作数据的方法进行有机结合,一种函数抽象...
    99+
    2022-11-13
  • 一篇文章带你了解JAVA面对对象三大特征之封装
    目录面对对象的三大特征: 封装、继承、多态封装继承多态类和对象关于类关于对象三大特征第一封装关于封装思想 :private关键字this关键字构造方法构造方法注意事项总结面对对象的三...
    99+
    2022-11-12
  • AJPFX:关于面向对象的封装
    回顾        面向对象 -- 注重的是结果,强调的是具备功能的对象。        面向过程 -- 强调的是函数,注重的实现的过程。  &nbs...
    99+
    2023-06-02
  • 详细理解JAVA面向对象的封装,继承,多态,抽象
    目录类和对象的使用(面向对象思想落地的实现):子类对象实例化的全过程1.从结果上看:(继承性)2.从过程上来看:1.封装性2.继承性继承性的好处:3.多态性虚拟方法调用4.抽象性1....
    99+
    2022-11-12
  • Java 面向对象和封装全面梳理总结
    关于面向对象和封装的个人理解 类和对象 类:对事物的一种描述(具有共同属性和行为的事物的抽象),例如手机,属性:品牌价格,行为:玩游戏,刷vx; 对象:客观存在(在java中体现就是...
    99+
    2022-11-12
  • Java面向对象特性深入刨析封装
    目录1.认识封装2.控制访问权限-访问修饰符3.理解封装必须要知道-包3.1理解包的概念3.2 导入包中的类3.3 自定义包3.4 包的访问权限控制3.5 java中常见的包前面已经...
    99+
    2022-11-13
  • 详解JavaScript面向对象实战之封装拖拽对象
    目录概述1、如何让一个DOM元素动起来2、如何获取当前浏览器支持的transform兼容写法3、如何获取元素的初始位置5、我们需要用到哪些事件?6、拖拽的原理7、我又来推荐思维导图辅...
    99+
    2022-11-12
  • Python面向对象中的封装详情
    目录一 封装的概念二 _ 和__ 对属性和方法的私有化1. 单下划线_2. 双下划线__3. 子类中访问父类的私有属性和私有方法三 访问及修改类的私有属性和私有方法1. 自定义公有方...
    99+
    2022-11-13
  • Java面向对象编程(封装/继承/多态)实例解析
    本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容。封装封装一个Teacher和Student类package com.hz.test;public class Teacher { private String name; pr...
    99+
    2023-05-30
    java 面向对象 ava
  • Python面向对象编程之类的封装
    目录1、封装的理解2、私有类属性、公开类属性、私有实例属性和公开实例属性2.1 公开类属性2.2 私有类属性2.3 公开实例属性2.4 私有实例属性2.5 私有属性不一定真的私有3、...
    99+
    2022-11-12
  • 详解C语言面向对象编程中的封装
    目录前言一、面向对象基本概念什么是对象?对象与类面向对象的编程方式二、C语言实现面向对象面向对象的三大特征面向对象之封装简介代码实现–基础版代码实现-进阶版总结前言 面向...
    99+
    2022-11-13
  • PHP面向对象之封装,继承与多态详解
    在普通的编程中,没有涉及架构或者良好的设计,绝大多数都是使用的面向过程的方式。 当编程逐步深入后,就需要合理使用面向对象的知识来设计程序,而不是简单地脑海里有了思路就去写代码来实现,...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作