Java入门 | 封装教程

释放双眼,带上耳机,听听看~!

学习要点

  • 封装
  • 访问控制符
封装
没有封装的代码有何缺陷?

例如:对狗狗的健康值赋值为-100。如何避免?——使用封装。

封装的概念

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

 封装的好处
封装的步骤
上机练习:封装电子宠物系统的Dog类和Penguin类

需求描述:宠物的健康值必须在0-100之间,超过范围,则默认设置为60。

类的访问控制
访问控制符
  | private | default | protected | public
同一个类中 | √ | √ | √ | √
同一个包中 |   | √ | √ | √
子类中 |   |   | √ | √
全局范围内 |   |   |   | √

注意:如果一个java源文件里定义的所有类都没有使用public修饰,则这个java源文件的文件名可以是一切合法的文件名;但是一个java源文件中定义了一个public修饰的类,则这个源文件的文件名必须与public修饰的类的类名相同。

 封装原则

  • 如果一个Java类的每个实例变量都使用private修饰,并且为每个实例变量提供setter和getter方法,那么这个类就符合JavaBean规范的类。
  • 实例变量尽量采用private修饰。类变量(static修饰),类似全局变量的成员变量,可以考试使用public修饰。
  • 如果某个类主要作为父类使用,该类里的方法仅希望被子类重写,而不想被外部直接调用,则考虑使用protected修饰。
  • 有些方法只是作为类的辅助实现方法,也称为工具方法,这些方法是用private修饰。

java包机制

提供了类的多层命名空间,用于解决类的命名冲突、类文件管理问题。一般把一组功能相同的类放在同一个包下。

包的命名规则

包名的所有字母要小写。

命名规则:倒写的域名.项目名称.模块名称.组件名称

导入包中的类

使用一个包中的类,有两种方式:

第一种:使用类全名

第二种:在包名之后和类名之前使用import相应类

导入指定包中某个类的静态成员变量或者成员方法

import static的用法:

导入静态成员,简化代码书写工作。

上机练习:电子宠物系统包的设计
Java常用的包
常用包

Java的核心类都在java包及其子包下,Java扩展的许多类都放在javax包及其子包下。这些核心类和扩展的类也就是通常所说的API(应用程序接口),通过查询API文档可以获得详细的使用帮助指导。

  • java.lang:该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握。
  • java.util:该包提供了包含集合框架、集合工具类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
  • java.io:该包为文件系统、数据流和序列化提供输入与输出相关接口和类。
  • java.NET:该包提供了网络编程相关的类和接口。
  • java.sql:该包提供了使用Java语言进行JDBC数据库编程相关类和接口。
  • java.awt和javax.swing:这两个包提供了GUI设计与开发的类和接口。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。
  • java.text:该包提供了java文本格式化相关类。
 API文档的使用
类和封装的总结
使用面向对象的思想开发程序的好处
  • 客户和软件设计开发人员之间、软件设计开发人员内部交流更加顺畅
  • 提高软件设计和开发效率
从现实世界抽象出类
  • 找出名词确定类、属性
  • 找出动词确定方法
  • 剔除与业务无关的属性和方法
方法重载的规则
  •  方法名相同
  • 参数项不同
  • 与访问修饰符和返回值无关
static可以修饰属性、方法、静态块
  | static、非private修饰 |  非static、private修饰
属性 | 类属性、类变量 | 实例属性、实例变量
方法 | 类方法 | 实例方法
调用方式 | 类名.属性 类名.方法() 对象.属性 对象.方法() | 对象.属性 对象.方法()
归属 | 类 | 单个对象
实现封装的步骤
  • 修改属性的可见性
  • 创建公有的getter/setter方法
  • 在getter/setter方法中加入属性控制语句

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧