java面向对象之 封装 Encapsulation
什么是封装:对象中的成员该隐藏的隐藏、该公开的要公开
封装:顾名思义,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装的目的
增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。
封装的大致原则:
1、把尽可能多的东西藏起来.对外提供简捷的接口.
2、把所有的属性藏起来.
3、封装好处:将变化隔离;便于使用;提高重用性;安全性。
访问控制修饰符Modifiers
可以修饰:属性、方法、构造方法、类
public protected 默认不写 private
公开的 受保护的 私有的
从上到下:作用范围递减
修饰符\作用范围 本类 同包 子类 其它
public OK OK OK OK
protecetd OK OK OK
默认不写 OK OK
private OK
1、属性的封装
(1)属性私有 private修饰 本类内部可见,保证对象数据的安全
(2)提供getter、setter方法来读取或改写属性值
2、方法的封装
常用public、protecetd、private来修饰方法,具备不同的可见性。
public: 任何作用域都可见
protecetd: 常用于父类需要继承给子类的方法
private: 只有本类内部可以使用
public和private有何区别? (BS MS)
来自于项目中的经验和总结:
1)public修饰的方法才算作工作量。
2)public修饰的方法需要增加后期的维护成本。
3、构造方法的封装
构造方法一般使用public修饰:外界可以直接new对象,会间接调用其构造方法
public Animal(){}
如果构造方法使用private修饰:外界就不能new对象
private Animal(){}
java面向对象之 封装 Encapsulation的更多相关文章
- Java面向对象(封装性概论)
Java面向对象(封装性概论) 知识概要: (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...
- java面向对象(封装,继承,多态,抽象,接口的定义和实现)
1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...
- Java面向对象的封装
封装是Java面向对象的三大特性之一,通常我们是通过包管理机制同时对类进行封装,隐藏其内部实现细节,通常开发中不允许直接操作类中的成员属性,所以属性一般设置为私有权限private,类中一般会给出一些 ...
- Java笔记(十)……面向对象II封装(Encapsulation)
封装概念 封装: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: 将变化隔离. 便于使用. 提高重用性. 提高安全性. 封装原则: 将不需要对外提供的内容都隐藏起来. 把属性都隐藏,提 ...
- Java面向对象之封装
面向对象的三个特征:封装.继承和多态. Java开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- Java面向对象之封装 入门实例(一)
一.基础概念 (一)面向对象的三大特征: 1.封装 2.继承 3.多态 (二)封装:隐藏实现细节,对外提供公共的访问方式(接口). 封装的体现之一:将属性都 ...
- java面向对象之封装性
面向对象的特征之一:封装和隐藏: 一.问题的引入: 当创建一个类的对象以后,可以通过“对象.属性”的方式,对对象的属性进行赋值.这里,赋值操作要受属性的数据类型和存储范围的制约.除此之外,没有其他制约 ...
- Java 面向对象,封装,继承
1相关概念的理解 1.1面向过程.面向对象 面向过程与面向对象都是编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.(职员思想) 面向 ...
随机推荐
- C++中socket编程
原文:http://blog.csdn.net/cuiran/article/details/5854794 Server端 #include <WINSOCK2.H> #include ...
- Python面向对象关系
首先了解一下Python面向对象中类型-实例和父类-子类的关系.下面的一些规则很有用. 当我们介绍许多不同的对象时,我们只用了两种关系(图4.1 关系): 是一类(is a kind of)(实线): ...
- 原生JS研究:学习jquery源码,收集整理常用JS函数
原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...
- MYSQL 日志文件路径错误 1067错误
场景再现: ---------------------------------------------------------------------------------------------- ...
- QFN和QFP的区别
QFN(quad flat non-leaded package)四侧无引脚扁平封装.多称为LCC. 陶瓷QFN :基本上都是LCC 标记. 塑料QFN 也称为塑料LCC.PCLC.P-LCC 等. ...
- Compiling Qt 5.5.1 (With Qtwebkit) With Visual Studio 2015
I usually avoid writing articles about building a specific version of a software project but this ti ...
- C++STL_max
template<class T> T max(T a,T b) { return a>b?a:b; }
- 用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
- poj2864
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main ...
- cocos2d-x3.0 SpriteFrameCache
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ...