封装概念

封装:

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:

    • 将变化隔离。
    • 便于使用。
    • 提高重用性。
    • 提高安全性。

封装原则:

    • 将不需要对外提供的内容都隐藏起来。
    • 把属性都隐藏,提供公共方法对其访问。

private(私有)关键字

private关键字:

    • 是一个权限修饰符。
    • 用于修饰成员(成员变量和成员函数)
    • 被私有化的成员只在本类中有效

常用之一:

将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。

构造函数

特点:

    • 函数名与类名相同
    • 不用定义返回值类型
    • 不可以写return语句

作用:

给对象进行初始化。

注意:

    • 默认构造函数的特点(权限与类相同)。
    • 多个构造函数是以重载的形式存在的。
    • 只运行一次。

构造函数可以被private关键字修饰,当所有构造函数被私有时,此类不能创建实例对象

构造代码块

特点:

    • 为对象初始化
    • 建立对象时即运行,优先于构造函数

与构造函数的区别:

    • 构造代码块为所有对象初始化
    • 构造函数为对应对象初始化

this关键字

特点:

this代表其所在函数所属对象的引用。

换言之:

this代本类对象的引用。

什么时候使用this关键字

当在函数内需要用到调用该函数的对象时,就用this。

this语句

this();

只能放在构造函数第一行,因为初始化动作要先执行

一般函数不能调用构造函数,this()不允许出现在一般函数中

static(静态)关键字

static关键字:

用于修饰成员(成员变量和成员函数)

被修饰后的成员具备以下特点:

    • 随着类的加载而加载
    • 优先于对象存在
    • 被所有对象所共享
    • 可以直接被类名调用

实例变量和类变量的区别

存放位置

  1. 类变量随着类的加载存放于方法区中
  2. 实例变量随着对象的建立存放在堆中

生存周期

  1. 类变量生存周期最长,随着类的消失而消失
  2. 实例变量随着对象的消失而消失

使用注意

    • 静态方法只能访问静态成员

      • 非静态方法既可以访问静态成员,也可以访问非静态成员
    • 静态方法中不可以写this,super关键字
      • 因为静态优先于对象存在,所以静态中不可以出现this,super
    • 主函数是静态的

静态利弊

    1. 好处:

      1. 对对象的共享数据进行单独空间的存储,节省空间
      2. 可以直接被类名调用
    2. 弊端:
      1. 生命周期过长
      2. 访问出现局限性

何时定义

何时定义静态变量

对象中有共享数据时(即属性值相同)

何时定义静态方法

此方法不访问对象的特有数据时

静态应用

工具类

  • 构造函数需私有化
  • 函数被静态修饰提供给外界使用
  • 例如:util包中的Arrays工具类

Java笔记(十)……面向对象II封装(Encapsulation)的更多相关文章

  1. Java笔记(九)……面向对象I

    面向对象概念 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向 ...

  2. 疯狂java学习笔记之面向对象(五) - 封装、继承、多态

    一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...

  3. Java笔记(十五)……面向对象IV多态(polymorphism)

    概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...

  4. java面向对象之 封装 Encapsulation

    什么是封装:对象中的成员该隐藏的隐藏.该公开的要公开 封装:顾名思义,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有 ...

  5. Java学习笔记(十)面向对象---接口

    理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...

  6. JAVA 1.9 面向对象之封装

    1. 面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)2. 封装:类包含了数据与方法,将数据与方法放在一个类中就构成 ...

  7. java笔记之面向对象

    一.面向过程与面向对象的区别 1 面向过程:主要关注点是:实现的具体过程,因果关系[集成显卡的开发思路] * 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低. * 缺点:采用面向 ...

  8. Java学习之面向对象特性-----封装

    面向对象特性一.封装(Encapsulation)封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.好处: 将变化隔离 便于使用 提高复用性 提高安全性封装原则: 将不需要对外提供的内容都隐 ...

  9. java笔记十:java中的反射

    Java中,反射是一种强大的工具.它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而 ...

随机推荐

  1. CSS 神器 compass

    compass 官网 compass 算是我在做 前端工程师 中遇到的用的最爽的工具.当我第一次使用它之后就不能自拔.下面对 compass 做一个比较系统的介绍,也可以做一个简单的入门教程.

  2. PHP 生成随机浮点数

    <?php /** * @desc 获取随机浮点数(支持最大最小值参数互换) * @date 2014-11-07 17:04:21 * * @param int|\最小浮点数 $min 最小浮 ...

  3. Python爬虫(小练习)

    近日,在浏览伯乐在线(http://blog.jobbole.com/29281/)的时候碰到一些很不错的资源:25本免费的Python电子书 如下图: 其中,每本都是以名字+超链接的方式,于是激起了 ...

  4. 工作流(Workflow)学习---基础知识整理

    工作流定义: 工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成. 工 ...

  5. CentOS 6.X更新Python2.7.x版本 安装pip

    在安装新版之前安装 先安装bz2.zlib,执行下列代码进行安装 yum install -y zlib-devel bzip2-devel xz-libs wget openssl openssl- ...

  6. 2014年度辛星css教程夏季版第三节

    第二节我们讲述的几乎全是CSS的选择器,那么下面这一节我们来讲一下CSS的颜色和文本的一些东西,虽然我对调色不大敏感,但是对于颜色还是比较感兴趣的. *********CSS中的颜色********* ...

  7. Java学习--String、StringBuffer与StringBuilder

    String并不是基本数据类型,而是一个对象,并且是不可变的对象.String类为final型的不可被继承,而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的 ...

  8. button的相关属性

    设置自定义按钮的文字大小 [submit.titleLabel setFont:[UIFont boldSystemFontOfSize:16]]; 设置按钮选中状态的颜色 [btn setTintC ...

  9. css3 图标上下移动动画

    @-webkit-keyframes bird{ 0% { -moz-transform: translate(0,0); -webkit-transform: translate(0,0); -o- ...

  10. 为什么Nagios会那么吵?你又能做些什么呢?(1)

    如果你受困于 Nagios 的告警洪潮中不能自拔,那么这两篇连载博客就是为你而生的.让我们来详细的阐述下这个问题! 运维人员都有着独立的监控工具,因此会经常受到 Nagios 告警吵闹的影响.很多运维 ...