`
mywebcode
  • 浏览: 1026454 次
文章分类
社区版块
存档分类
最新评论

java 第七课 隐藏和封装

 
阅读更多
¯理解封装
封装(Encapsulation)是面向对象三大特征之一(封装、继承、多态),它指的是将对象的状态信息隐藏在内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
对一个类或对象实现良好的封装,可以实现以下目的:
µ隐藏类的实现细节。
µ让使用者只能通过事先预定的方法访问数据,从而可以在该方法里加入控制逻辑,限制对属性不合理访问。
µ可进行数据检查,从而有利于保证对象信息的完整性。
µ便于修改,提高代码的可维护性。
为了实现良好的封装,需要从两个方面考虑:
µ将对象的属性和实现细节隐藏起来,不允许外部直接访问。
µ把方法暴露出来,让方法来操作或访问这些属性。
隐藏和封装
使用访问控制符




注意:对于类而言,可以使用public和默认访问控制符修饰,使用public修饰的类可以被所有类使用,不使用任何访问控制符修饰的类只能被同一个包中的所有类访问。
定义Person类,实现良好的封装。
public class Person{
private String name;
private int age;
public void setName(String name) {
//要求用户名必须在2~6位之间
if (name.length() > 6 || name.length() < 2){
System.out.println("您设置的人名不符合要求");
}else{
this.name = name;
}
}

public String getName(){
return this.name;
}
public void setAge(int age){
//要求用户年龄必须在0~100之间
if (age > 100 || age < 0){
System.out.println("您设置的年龄不合法");
}else{
this.age = age;
}
}
public int getAge(){
return this.age;
}
}
注意:属性的getter方法和setter方法有重要的意义,命名应遵循的原则:将原属性名的首字母大写,并在前面分别增加set和get动词,就变成setter和getter方法名 。
访问控制符的使用总结:
µ类中绝大部分属性应该使用private修饰,除了一些static修饰的、类似全局变量的属性,才考虑使用public修饰。
µ有些方法只是用于辅助实现该类的其他方法,这些方法被称为工具方法,也应用private修饰。
µ如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界直接调用,则应该使用protected修饰这些方法。
µ希望暴露出来给其他类自由调用的方法使用public修饰。
µ顶级类通常都希望被其他类自由使用,所以大部分顶级类都使用public修饰。
¯package和import
µ包:Java中,包(package)是一组相关的类和接口的集合。Java编译器将包与文件系统的目录一一对应起来。
µ
µ
优点:
ü避免大量类的重名冲突,扩大名字空间。
ü包体现了封装机制
µ包的创建:如果希望把一个类放在指定的包结构下,应该在Java源程序的第一个非注释行放如下格式的代码:package packageName[.packageName[…]];
µ
例4.18 包的创建。
package hbsi;
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
注意:
ü包名是有效地标识符即可,但从可读性规范角度来看,包名应该全部由小写字母组成。
ü为了避免不同公司之间类名的重复,Sun建议使用单位Internet域名倒写来作为包名,
üpackage语句必须作为源文件的第一句非注释性语句,一个源文件只能指定一个包,该源文件中可以定义多个类,则这些类将全部位于该包下。
ü如果没有显示指定package语句,则处于无名包下。实际企业开发中,通常不会把类定义在无名包下。
µ包中类的使用
如果要使用包中的类,可以有两种方法:
ü引用包中的类(使用类的全限定名称)myPackage.mySubPackage.Book bookObj=new myPackage.mySubPackage.Book();
üimport语句引入包中的类
格式:import 包名.类名;
或 import 包名.*; //“*”号表示所有类
例如: import myPackage.mySubPackage.*;
Book bookObj=new Book();
注意:在引入具有层次结构的包时,“*”号仅仅表示该包中的所有类,如果该包中还有子包,那么子包中的类时不被包括的。

µ比较两种方法的优缺点:
ü适用包名作前缀的方法使程序清晰,很容易就看出所使用的类位于哪个包中;而引入包的方法要知道某个类所在的包比较困难.
ü使用引入包的方法会带来名字冲突的问题,而使用包名作前缀不会存在这样的问题.
ü使用包名作前缀书写程序时比较麻烦.
µ静态导入
JDK1.5以后更是增加了一种静态导入的语法,它用于导入指定类的某个静态属性值或全部静态属性值。
ü导入指定类单个静态属性
import static 父包.子包…类名.静态属性名;
例:import static java.lang.System.out;
ü导入指定类全部静态属性
import static 父包.子包…类名.*;
例:import static java.lang.Math.*;


分享到:
评论

相关推荐

    JAVA学习第一课 I.

    在“第一课 I.swf”文件中,很可能是以动画或交互式的形式讲解了这些概念,帮助初学者更好地理解和掌握Java的基础知识。通过这样的学习,你可以逐步建立起对Java编程的理解,并为后续的深入学习打下坚实的基础。记得...

    09_Java面向对象_第1天(类、封装)_讲义

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle...在"09_Java面向对象_第1天(类、封装)_讲义"文档中,你将找到更多关于这两个主题的详细解释和实例,帮助你进一步掌握Java面向对象编程。

    java程序设计教程第七版课后习题答案

    Java程序设计教程第七版是Java学习者的重要参考资料,其课后习题答案对于巩固理论知识、提高编程技能具有极大帮助。本教程涵盖了Java语言的基础到高级特性,包括但不限于语法、面向对象编程、异常处理、集合框架、多...

    JAVA学习第一课 G

    Java学习第一课 G 在Java的学习旅程中,第一课通常会涵盖基础概念,为后续深入学习打下坚实的基础。"G"可能代表了课程的某个阶段或者特定的主题,但在这个场景下,没有足够的信息来具体解释它所指代的内容。然而,...

    POI操作Excel的封装

    在Java世界中,Apache POI库是一个非常强大的工具,它允许开发者读取、写入以及修改Microsoft Office格式的文件,包括Excel(XLS和XLSX)、Word(DOC和DOCX)以及PowerPoint(PPT和PPTX)。在这个场景中,"POI操作...

    java核心技术(第七版)源代码

    Java核心技术是Java编程语言的核心学习资源,其第七版的源代码涵盖了广泛的Java开发知识点。这份压缩包包含了上卷和下卷的源代码,为深入理解Java编程提供了宝贵的实践材料。以下将详细介绍这些源代码中涉及的主要...

    Auto_adb:java 封装adb命令

    7. **依赖管理**:在Java项目中,可能需要使用构建工具(如Maven或Gradle)来管理和导入必要的依赖库,如处理ADB通信的第三方库。 8. **测试框架**:为了确保封装的ADB命令功能正确,项目可能包含了单元测试或集成...

    Java语言程序设计(郑莉)第七章课后习题答案

    在Java语言程序设计的学习过程中,第七章通常涵盖了重要的面向对象编程概念。郑莉老师的教材是清华大学出版社出版的经典之作,深入浅出地讲解了Java的核心知识。在这个章节的课后习题答案中,我们可以期待找到一系列...

    《java基础入门》第三版 第一章作业.doc

    7. Java 语言的封装和抽象:封装用于隐藏对象的状态,抽象用于定义对象的行为。 8. Java 语言的访问控制:public、private、protected 等访问控制符用于控制对象的访问权限。 9. Java 语言的异常处理:try、catch...

    Java软件开发实战 Java基础与案例开发详解 5-0 抽象和封装 共55页.pdf

    ### 第7章 面向对象的分析与设计 - **分析**:识别问题领域中的对象和它们之间的关系。 - **设计**:构建系统架构和对象模型。 - **原则**:可维护性、可复用性。 - **工具**:UML类图、序列图等。 ### 第8章 内部...

    java基础课ppt

    - 封装:隐藏数据,提供公共接口来访问和修改。 - 继承:一个类可以继承另一个类的属性和方法,实现代码复用。 - 多态:同一类型的引用可以指向不同类的对象,子类对象可以替代父类对象。 9. **接口**: - 接口...

    java第一件代码

    - **封装**:隐藏对象的属性和实现细节,仅对外提供公共访问方式。 - **继承**:子类继承父类的属性和方法,实现代码复用。 - **多态**:同一种行为表现出不同形态,使得接口统一,实现灵活。 11. **异常处理**...

    Java程序设计基础篇(第8版)第七章编程题答案

    Java程序设计基础篇(第8版)的第七章主要涵盖了面向对象编程的重要概念和技术,包括类、对象、封装、继承和多态等核心主题。在这一章的学习中,编程题通常用于帮助读者深入理解这些概念并提升实际编程能力。下面将...

    Java2实用教程第六版课后习题答案答案

    Java2实用教程第六版是Java编程学习的经典教材之一,它为初学者提供了全面而深入的Java语言知识。这本书的课后习题旨在帮助读者巩固所学的概念,提高编程能力。本资源是该教程第六版的课后习题答案,对于正在自学...

    疯狂java讲义06 电子版 pdf

    虽然Java引用和C语言指针在功能上相似,都用于间接访问内存中的对象,但Java隐藏了内存地址的具体细节,使得开发者在使用时不必直接操作内存地址,减少了内存泄露等低级错误的发生。Java的引用类型更接近于面向对象...

    黑马程序员_Java基础辅导班教程课件[第01期]第7天

    总的来说,这个Java基础辅导班的第7天课程将深入探讨面向对象编程的关键概念,通过实际操作和理论讲解相结合的方式,帮助学习者构建坚实的基础,为后续的高级主题学习打下坚实的基础。通过反复练习和理解,学习者将...

    《Java基础案例教程(第2版)》课后习题答案1

    这些知识点是Java初学者需要掌握的基础,深入理解和熟练运用这些知识是成为合格的Java程序员的第一步。在实际编程中,还需要学习异常处理、集合框架、IO流、网络编程、多线程高级特性以及设计模式等更多内容。

    类和对象、对象和封装、继承、多态、异常等教学...

    "第七章 异常.pdf"将讲述如何使用try-catch语句块捕获和处理异常,以及finally块的使用。 通过这七章节的学习,初学者将能全面了解Java面向对象编程的基本原理和实践技巧,为后续深入学习和开发奠定坚实基础。每个...

    基于Java的实例开发源码-(Java 语言对Google翻译引擎的封装类库).zip

    在本项目中,我们关注的是一个使用Java语言封装Google翻译引擎的实例开发源码。这个类库使得开发者能够轻松地在Java应用中集成Google的翻译功能,为用户提供跨语言的文本转换服务。以下是对这个主题的详细解释: 1....

    java视频教程_黑马Java零基础辅导班[第一期]第1天课件源码

    1. 封装:隐藏内部实现细节,对外提供公共接口,提高代码的安全性和可维护性。 2. 继承:子类继承父类的属性和方法,实现代码复用,建立类之间的层次结构。 3. 多态:同一接口,不同实现,使得代码更具灵活性,提高...

Global site tag (gtag.js) - Google Analytics