Java笔记(十)……面向对象II封装(Encapsulation)
封装概念
封装:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
- 将变化隔离。
- 便于使用。
- 提高重用性。
- 提高安全性。
封装原则:
- 将不需要对外提供的内容都隐藏起来。
- 把属性都隐藏,提供公共方法对其访问。
private(私有)关键字
private关键字:
- 是一个权限修饰符。
- 用于修饰成员(成员变量和成员函数)
- 被私有化的成员只在本类中有效
常用之一:
将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。
构造函数
特点:
- 函数名与类名相同
- 不用定义返回值类型
- 不可以写return语句
作用:
给对象进行初始化。
注意:
- 默认构造函数的特点(权限与类相同)。
- 多个构造函数是以重载的形式存在的。
- 只运行一次。
构造函数可以被private关键字修饰,当所有构造函数被私有时,此类不能创建实例对象
构造代码块
特点:
- 为对象初始化
- 建立对象时即运行,优先于构造函数
与构造函数的区别:
- 构造代码块为所有对象初始化
- 构造函数为对应对象初始化
this关键字
特点:
this代表其所在函数所属对象的引用。
换言之:
this代本类对象的引用。
什么时候使用this关键字
当在函数内需要用到调用该函数的对象时,就用this。
this语句
this();
只能放在构造函数第一行,因为初始化动作要先执行
一般函数不能调用构造函数,this()不允许出现在一般函数中
static(静态)关键字
static关键字:
用于修饰成员(成员变量和成员函数)
被修饰后的成员具备以下特点:
- 随着类的加载而加载
- 优先于对象存在
- 被所有对象所共享
- 可以直接被类名调用
实例变量和类变量的区别
存放位置
- 类变量随着类的加载存放于方法区中
- 实例变量随着对象的建立存放在堆中
生存周期
- 类变量生存周期最长,随着类的消失而消失
- 实例变量随着对象的消失而消失
使用注意
静态方法只能访问静态成员
- 非静态方法既可以访问静态成员,也可以访问非静态成员
- 静态方法中不可以写this,super关键字
- 因为静态优先于对象存在,所以静态中不可以出现this,super
- 主函数是静态的
静态利弊
好处:
- 对对象的共享数据进行单独空间的存储,节省空间
- 可以直接被类名调用
- 弊端:
- 生命周期过长
- 访问出现局限性
何时定义
何时定义静态变量
对象中有共享数据时(即属性值相同)
何时定义静态方法
此方法不访问对象的特有数据时
静态应用
工具类
- 构造函数需私有化
- 函数被静态修饰提供给外界使用
- 例如:util包中的Arrays工具类
Java笔记(十)……面向对象II封装(Encapsulation)的更多相关文章
- Java笔记(九)……面向对象I
面向对象概念 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向 ...
- 疯狂java学习笔记之面向对象(五) - 封装、继承、多态
一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
- Java笔记(十五)……面向对象IV多态(polymorphism)
概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...
- java面向对象之 封装 Encapsulation
什么是封装:对象中的成员该隐藏的隐藏.该公开的要公开 封装:顾名思义,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有 ...
- Java学习笔记(十)面向对象---接口
理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...
- JAVA 1.9 面向对象之封装
1. 面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)2. 封装:类包含了数据与方法,将数据与方法放在一个类中就构成 ...
- java笔记之面向对象
一.面向过程与面向对象的区别 1 面向过程:主要关注点是:实现的具体过程,因果关系[集成显卡的开发思路] * 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低. * 缺点:采用面向 ...
- Java学习之面向对象特性-----封装
面向对象特性一.封装(Encapsulation)封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.好处: 将变化隔离 便于使用 提高复用性 提高安全性封装原则: 将不需要对外提供的内容都隐 ...
- java笔记十:java中的反射
Java中,反射是一种强大的工具.它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而 ...
随机推荐
- matlab2014在mac Yosemite下出现java空指针情况
恢复方法为 使用xcode打开 /System/Library/CoreServices/SystemVersion.plist 将 ProductVersion 下的10.10或10.10.1改为1 ...
- 解决laravel中环境配置不起作用的方法
博客已经迁移到www.imyzf.com,本站不再更新,请谅解! laravel有个环境配置选项很好用,在bootstrap/start.php中,曾经百度到这里面加入域名,就可以自动选择环境 $en ...
- Fluid Shopping Website 开发阶段性总结——第一周
开发目的: 可链接微信公众号,无论是桌面端.移动端完美兼容,给用户提供不逊于原生App的用户体验.作为一个软件,有充分的可扩展性,便于未来增强开发.同时给一些正在尝试做OTO的朋友们提供一个平台,因为 ...
- 折腾了一早上的C# WPF ListView+Grid 实现图片+文字 自动换行排列 类似Windows资源管理器效果
<ListBox Name="lstFileManager" Background ="Transparent" ItemsSource="{B ...
- T[]与List<T>的使用时机
所有的数组类型都隐式地从System.Array这个抽象类派生,而System.Array又派生自System.Object.也就是说数组是引用类型.通过如下方式创建数组: int[] arrInt ...
- 《深入理解计算机系统》C程序中常见的内存操作有关的典型编程错误
对C/C++程序员来说,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的模块跑起来后才出现内存崩溃,是很让人痛苦的.因为崩溃的位置在时间和空间上,通常是在距真正的错误源一段距离之后才 ...
- C#.net调用axis2webService
用C#.net调用axis2webService的时候需要引用web服务, 比如访问地址为:http://111.21.32.213:8080/axis2/services/AdService/get ...
- 《有限元分析基础教程》(曾攀)笔记一-二维杆单元有限元程序(基于Python)
曾攀老师的<有限元分析基础教程>第三章有二维杆单元的推导,并结合一个例题进行了解析解和基于Matlab的程序求解.但是我感觉书中的MATLAB代码有点罗嗦,而且一些实现方法也比较麻烦,比如 ...
- 设计的SOA架构
新来老大年前开会说各位同学,公司业务越来越重,未来几年要成倍增长......,要梳理出一套新架构,才能更好的支持N万用户.....,以后升职加薪当上....打败..... 想想还有点小激动呢,于是过年 ...
- 解决ubuntu无法调整和保存屏幕亮度的问题
整理自解决ubuntu无法调整和保存屏幕亮度的问题 ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的. 所谓的调整,方法为下面的其中一种: 1.Fn+左右 ...