Java面向对象的封装特征深度解析

目录
  • 面向对象三大特征
  • 封装
    • private关键字——实现类封装
    • 访问器方法和更改器方法
    • 包——类的集合
    • 导入包
    • 从人的角度理解包
    • 不加访问权限——实现包封装
  • 总结

在上一篇文章中,我们了解了面向对象的基础内容,这一篇将会更加深入地了解面向对象的特征。

面向对象三大特征

面向对象语言有三大特征:

  • 封装
  • 继承
  • 多态

封装

对一个类实现封装,意味着限制其它类对该类数据的访问。

简单来讲,封装就是隐藏数据,就是保护对象的数据。对象,听起来总是那么地抽象,为了更好地理解封装,我将对象具体指向人,从人的角度进行讲解。
在社会上生活的每一个人,总是会和其他人进行交际,为了扩充自己的人脉或者为了发生一些“思想上的碰撞”。

但是,你总不会希望自己被一个毫不相识的人发现个人的隐私信息或者一些更加私密性的东西。所以,你希望将这些信息给保护起来。Java作为一种典型的面向对象程序设计语言,自然也会为对象考虑。所以,保护对象的私密信息将是Java的一项重要任务。封装就是保护对象的私密信息的一种体现。

在Java中,使用了很多技术实现封装,接下来一一进行讲解。

private关键字——实现类封装

private用于限制变量的作用域,被private修饰的变量只能在该类中使用,该类的对象不能直接调用private变量。

先看一个例子

public class Person {
    private String name;
    private int age;
    private String sex;
}

在这个类中定义了三个私有变量——name、age、sex。因为它们被private所修饰,所以他们被称为私有域。对于私有域来说,他们不能通过对象进行调用,只可以在类中进行使用。

这是写在idea中的一段代码,可以看到,当使用Person类对象进行调用的时候,没有显示Person类的三个属性。如果直接调用,程序将会报错:

那么,在对象无法直接访问私有域的情况下,我们应该怎样查看对象的属性?答案是使用访问器方法和更改器方法。

访问器方法和更改器方法

访问器方法:getXxx(),提供属性的访问
更改器方法:setXxx(),对属性进行设置

通过更改器方法设置/修改属性的值,通过访问器方法得到属性的值。对上面的Person类进行修改:

public class Person {
    private String name;
    private int age;
    private String sex;

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSex() {
        return sex;
    }
}

包——类的集合

在Java中,类具有特别重要的地位,所有操作都是在类中进行定义,你不可能在类外面写一段循环操作或者其他操作。

为了让程序员更加方便地寻找需要的类,Java的设计者引入了包的概念。

包(package):是一个类似于文件夹的概念,可以将多个类文件保存在一个包里面。

引入包之后,类便可以“出现”重名的情况。只要保证这些类位于不同的包即可。

导入包

为了可以使用包中的类,使用import关键字导入指定的包,在导入包之后,就可以使用包中的类。

import java.util.Date;	//导入java包下的Date类

现在,思考一个问题:如果导入的两个包里有重名的类,那么我们应该怎么区分这两个类呢?

答案是:使用包含报名的全类名。以Date类为例:
在Java中,有两个Date类:一个位于java.util,另外一个位于java.sql,如果在一个程序中同时使用Date时,需要加上包名。

import java.util.Date;	//由于有命名冲突的情况,只能导入一个包
public class Person {
    Date date;
    java.sql.Date dat;
}

或者也可以

import java.sql.Date
public class Person {
    Date date;
    java.util.Date dat;
}

从人的角度理解包

和之前一样,我们不把对象视为一个抽象的、无法理解的概念,将它具体化,将它视为人,那么包又是什么?
如果你看过Java API或者对Java有一个比较深的了解,那么,你会发现,包是有具体的功能的。更加具体地说,同一个包放同一个类型的类。例如:java.util包里面放置了一些工具类,java.sql包里面放置了一些用于数据库连接的类。java.io包里面放置了一些关于输入输出流的类······
这样,我们就可以这样理解包:
在成长的过程中,因为选择的不同,每个人都有不同的职业,医生、厨师、工程师、程序员······,也就是说,包对应着人类社会中的职业。

不加访问权限——实现包封装

老话说得好,隔行如隔山,每一个行业都有自己行业的一些潜在规则,每一个行业都有其他行业不了解的规则。那么,Java是如何实现这种包和包之间的信息封装?看下面的代码:

package doctors;

public class doctor {
    String name;	//行业名
    int exp;			//工作经验
    int age;			//年龄
    String skill;	//行业技能
}

上面的这段代码就实现了包封装。简单地说,就是不加任何修饰符。

在Java中,不加任何修饰符表示该变量可以被包中的任何一个类使用。

总结

封装性是面向对象的一种基本特性,它的出现主要是为了保护信息的安全。从人的视角看,封装就是不愿意分享自己小秘密的一种体现。

到此这篇关于Java面向对象的封装特征深度解析的文章就介绍到这了,更多相关Java 封装内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java基础第四篇 封装与接口

    目录 1.封装与接口 2.对象成员的封装 3.类的封装 4.总结 前言: 总结之前的内容,对象(object)指代某一事物,类(class)指代象的类型.对象可以有状态和动作,即数据成员和方法. 到现在为止,数据成员和方法都是同时开放给内部和外部的.在对象内部,我们利用this来调用对象的数据成员和方法.在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员 和 对象.方法() 来调用对象的数据成员和方法. 1.封装与接口 封装(encapsulation)是计算机常见的术语,

  • java封装实例用法讲解

    我们可以选择把类的方法.属性装起来,便于日后的程序书写和使用,这种处理方法就是封装的思想.因为封装类之后,其他的外部类方法就不能在混入其中,对代码的安全性进行了提高.接下来我们就对java中封装的概念.目的进行介绍,然后在实例中为大家演示封装的方法. 1.概念 封装性是面向对象三大特征之一,是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问. 2.目的 (1)辛苦一次,后面都能少敲很多代码,增强了代码得复用性

  • java方法通用返回结果集封装操作

    我们在封装方法的时候,有的时候除了需要返回数据结果集data,有的时候需要返回code(或者status) 或者 msg , 此时可以采取下面两种方式进行封装方法的返回值: 一.返回结果使用HashMap接收 1.方法中的数据封装到hashmap中 public Map<String,Object> result(Object object) { Map<String,Object> result = new HashMap<String, Object>(); res

  • Java中的封装、继承和多态,你真的都懂了吗

    封装 所谓的封装就是把类的属性和方法使用private修饰,不允许类的调用者直接访问,我们定义如下一个类,可以看到所有的成员变量和成员方法都使用private修饰了,我们现在来使用一下这个类. 当我们使用的时候编译器给出了下面这样的报错. 告诉我们说是private访问控制,那么这是什么意思呢?我们来看看另外一张图,那么这张图代表这什么呢?在看这张图之前,我们先来看看四者都提到的包,那么包又是什么呢,包可以简单理解为一个文件夹,把类放到放到包里面,也就相当于是专门的文件夹里面,这不是我们说的重点

  • JAVA回顾:封装,继承,多态

    目录 知识点回顾 封装 继承 super注意点: Vs this: 前提: 构造方法 多态 总结 知识点回顾 封装 封装(有时称为数据隐藏)是与对象有关的一个重要概念.从形式上来看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式.对象中的数据称为实例域,操作数据的过程称为方法.对于每个特定的类实例(对象)都有一组特定的实例域值.这些值的集合就是这个对象的当前状态.无论何时,只要向对象发送一个消息,它的状态就有可能改变. 实现封装的关键在于绝对不能让类中的方法直接地访问

  • 一篇文章带你深入了解Java封装

    目录 如何实现封装 代码展示 构造方法 注意点: 代码展示 总结 如何实现封装 可以分为两步: 第一步:将类的变量声明为private. 第二步:提供公共set和get方法来修改和获取变量的值. 代码展示 public class User { private String name; private int age; private int id; private String address; public int getAge(){ return age; } public String

  • Java基础-封装和继承

    目录 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 2.3 继承的好处 2.4 继承的格式 2.5 继承的demo 2.6 子类不能继承的内容 2.6.1 super 与 this 关键字 2.6.2 构造器不能被继承 2.6.3 final修饰的类不能被继承 2.7 方法重写 2.7.1 介绍 2.7.2 使用场景与案例 2.7.2 @Override重写注解 2.7.3 注意事项

  • Java面向对象的封装特征深度解析

    目录 面向对象三大特征 封装 private关键字--实现类封装 访问器方法和更改器方法 包--类的集合 导入包 从人的角度理解包 不加访问权限--实现包封装 总结 在上一篇文章中,我们了解了面向对象的基础内容,这一篇将会更加深入地了解面向对象的特征. 面向对象三大特征 面向对象语言有三大特征: 封装 继承 多态 封装 对一个类实现封装,意味着限制其它类对该类数据的访问. 简单来讲,封装就是隐藏数据,就是保护对象的数据.对象,听起来总是那么地抽象,为了更好地理解封装,我将对象具体指向人,从人的角

  • Java面向对象的三大特征

    java面向对象的三大特征:"封装.继承.多态".更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. 以本文为例,User类中的变量为私有变量,只能通过创建对象(此时构造方法自动调用)来赋值. 外界只能通过公有方法api()来访问User类. Admin类继承了User类,调用了其构造方法,还重写了method_1方法,增加了一个特有方法power(). User文件 public class User { /**

  • JAVA面向对象之继承 super入门解析

    目录 1 继承 1.1概念 1.2 特点 1.3 练习:继承入门案例 2 super 3 继承的用法 3.1 练习:super之继承中成员变量使用 3.2 练习:super之继承中构造方法的使用 4 方法重写Override 4.1 练习:继承中成员方法的使用 5 拓展 5.1 继承的好处与坏处 5.2 this与super的区别 5.3 重载Overload与重写Override的区别 1 继承 1.1概念 继承是面向对象最显著的一个特征 继承是从已有的类中派生出新的类,新类能吸收已有类的数据

  • Java 面向对象和封装全面梳理总结

    关于面向对象和封装的个人理解 类和对象 类:对事物的一种描述(具有共同属性和行为的事物的抽象),例如手机,属性:品牌价格,行为:玩游戏,刷vx: 对象:客观存在(在java中体现就是mian方法里面用类定义一个对象,然后用对象去调用方法或者调用成员变量) 二者关系:类为属性行为抽象,对象则为实体. 对象内存图理解:堆内存开辟空间,成员变量出现 并产生默认初始化值,将对象地址值记录以便于通过对象名调用成员变量. 成员变量和局部变量的区别:类中位置不同,内存中位置不同,生命周期不同,初始化值不同(成

  • 浅谈java面向对象(类,封装,this,构造方法)

    无论面向对象还是面向过程, 这俩都是解决问题的思路而已, 只是角度不同. 面向过程: 强调解决问题的每一个步骤都亲力亲为,每一个细节都自己手动实现. 面向对象: 使用特定功能对象去解决特定的问题, 每一个细节不需要关注,只需要创建对应的对象即可. 面向对象是基于面向过程的 类和对象及他们的关系 类: 具有相同特征和行为(功能)的事物的统称 , 是一个抽象概念 对象: 这类事物中某个确定的个体 类和对象的关系 一个类可以创建多个对象 , 类是对象的抽象, 对象是类的实例. 描述一个事物---->

  • 详细理解JAVA面向对象的封装,继承,多态,抽象

    目录 类和对象的使用(面向对象思想落地的实现): 子类对象实例化的全过程 1.从结果上看:(继承性) 2.从过程上来看: 1.封装性 2.继承性 继承性的好处: 3.多态性 虚拟方法调用 4.抽象性 1.抽象类的特点: 2.天生的父类:抽象类 3.抽象方法 总结 创建类的对象 = 类的实例化 = 实例化类 类和对象的使用(面向对象思想落地的实现): 1.创建类,设计类的成员 2.创建类的对象 3.通过"对象.属性"或"对象.方法"调用对象的结构 如果创建了一个类的多

  • Java面向对象三大特性及多态解析

    大家好,本文将会给大家带来Java多态. 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. class Person{ } 等价于 class Person extends Object{ } 1.对象的实例化过程 实例化一个类是从最顶级的超类开始实例化的, 是一层一层的包裹结构. "先父类后子类,先静态后成员". ⑴toString方法 toSt

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

    目录 面向对象思想之封装 什么是封装呢? 封装的好处意义 getter方法和setter方法 toString方法 总结: 面向对象思想之封装 或许大家都听说过java是纯面向对象语言,面向对象思想也就是我们常说的OOP,我们听说最多的思想就是继承,封装,多态,今天我们来讲一讲封装. 什么是封装呢? 封装就是一种将数据和操作数据的方法进行有机结合,一种函数抽象类的接口实现了对细节的封装和隐藏,使得我们只需要调用对外开放的公共接口去实现与对象的交互.我们可以把封装理解为一种保护的屏障,需要一些严格

  • Java面向对象编程(封装/继承/多态)实例解析

    本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容. 封装 封装一个Teacher和Student类 package com.hz.test; public class Teacher { private String name; private String majorDirection; private String teachCourse; private int teachAge; public Teacher() { super(); } public Teacher(Stri

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

    这篇文章主要介绍了JAVA面向对象 封装原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 抽象 去定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板).这种研究问题的方法称为抽象. 修饰符 Java提供四种访问控制修饰符号控制方法和变量的访问权限: Ⅰ.公开级别:用pubilc修饰,对外公开 Ⅱ.受保护级别:用protected修饰,对子类和同一个包中的类公开 Ⅲ.默认级别:没有修饰符号,向同一

随机推荐