OOP-封装
来源:互联网 发布:韩版硅胶手表淘宝 编辑:程序博客网 时间:2024/06/06 05:46
封装这种OOP的原则是:保护对象需要确保安全的部分,只暴露对象可以安全暴露的部分。
Java支持通过访问控制来进行封装,访问控制由访问控制修饰符来管理。Java中有四种访问控制修饰符:public、protected、private、缺省访问控制级别。访问控制修饰符可以应用到类或者类成员中。
在有很多类的应用程序中,类可以实例化,并通过同一个包或者不同包的其他类成员使用。在类的开头使用一个访问控制修饰符,就可以控制能从哪些包调用你的类。
package app04;/* * 类可以有public类或者缺省访问控制级,使用public访问控制修饰符,这个类就是公共的, * 没有访问控制修饰符声明的类具有缺省访问控制级。 * Book类是公共的,因此他可以从其他类实例化。 */public class Book { String isbn; String title; int width; int height; int numberOfPages;}
一个Java源文件只能包含一个公共类,但可以包含多个非公共类。
公共类必须存在于和类同名的文件中,扩展名必须是java。上边中的Book类必须保存在Book.java文件中。并且Book.java文件必须在app04目录下。
package app04;/* * 缺省访问级别的Chapter类 * 具有缺省访问级别的类只能被同一个包中的其他类使用。例如,Chapter类可以从Book类 * 的内部实例化,这是因为Chapter类和Book类属于同一个包,但是从其他包是看不到Chapter类的。 */class Chapter { String title; int numberOfPages; public void review() { Page page=new Page(); int sentenceCount=page.numberOfSentences; int pageNumber=page.getPageNumber(); }}
可以将下面的getChapter方法加入Book类中:
Chapter getChapter() {
return new Chapter();
}
如果将同样的getChapter方法加入不属于app04包的类中,就会产生编译错误。
类成员(方法、域、构造器等)访问控制修饰符:
public访问控制修饰符用于使类成员公开化;
protected修饰符也是使类成员公开化;
private修饰符则是使类成员私有化;
没有任何访问控制修饰符的成员将具有缺省访问级别,有时也称包私有(packageprivate)
能访问公共类的其他任何类都可以访问该公共类包含的类成员。
例如:
java.lang.Object类中的toString方法是公共的,
public String toString()
一旦构造了Object对象,就可以调用它的toString方法,
Object obj=new Object();
obj.toString();
package app04;/* * protected类成员的访问级别更加严格,他只能从下面的类中进行访问: * 和包含该成员的类在同一个包中任何类 * 包含该成员类的子类 */public class Page { //Page类为public级别,可以从任何其他的类型中实例化 int numberOfSentences=10; //缺省访问级别,允许同一个包中的类访问 private int pageNumber=5; //private,只允许从同一个类的内部进行访问 protected int getPageNumber() { //getPageNumber方法为protected级别,可以被任何属于app04包的类访问 return pageNumber; //pageNumber的访问仍然是private的,因此其他任何类都不能修改这个域,但是允许把他作为一个非private方法的返回值 }}
UML类图中可以包含类成员访问级别信息。
Public成员前面加前缀+,
protected成员前面加前缀#,
private成员加前缀-,
没有前缀的成员看作具有缺省访问级别。
构造器的访问级别与域和方法是一样的。有些构造器设计成private的,以便让他们的类不能用关键字new实例化。private构造器通常使用在单例(singleton)类中。
- OOP-封装
- OOP之封装 【C#】
- OOP之封装 【C#】
- OOP-----封装,继承,多态
- OOP-----封装,继承,多态
- java OOP 封装
- 面向对象(OOP)------封装
- OOP思想:封装、继承、多态
- oop特性——封装
- OC学习笔记OOP之封装
- OOP三个基本特征:封装、继承、多态
- OOP三个基本特征:封装、继承、多态
- oop三大特性--封装性
- OOP面向对象——封装
- oop思想的封装、继承、多态
- JAVA OOP 第一章 抽象和封装
- Python OOP中的封装与容器小结
- OOP
- listview的二级优化
- IOS 根据对象属性值过滤数组中的元素 Filter NSMutableArray with object property
- Java基础知识小结_运算符优先级
- 简单代理模式与策略模式区别
- 实验报告:2:2
- OOP-封装
- Gym-100502D Dice Game
- 嵌入式 Linux 的分类
- 关于用Java来写最大公约数和最小公倍数的问题详解及代码
- C#BAD实践:学习如何通过坏的例子做一个好的代码
- 石子合并 动态规划(直线型)
- 局部变量和全局变量的区别
- 配置eclipse的jvm参数 打开eclipse根目录下的eclipse.ini在最后面加上如下的jvm参数 -Xms400m -Xmx1400m -XX:NewSize=128m -XX:Max
- JS惰性函数