学习要点

  • 封装
  • 访问控制符

封装

没有封装的代码有何缺陷?

例如:对狗狗的健康值赋值为-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方法中加入属性控制语句

JavaSE-08 封装的更多相关文章

  1. java新手笔记9 类的封装示例

    1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...

  2. java应届生面试考点收集

    回 到 顶 部 这些知识点来自于之前去百度实习.阿里.蘑菇街校园招聘的电话面试 未完待续 JavaSE 面向对象 封装.继承.多态(包括重载.重写) 常见区别 String.StringBuffer. ...

  3. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  4. JavaSE学习总结第08天_面向对象3

      08.01 工具类中使用静态 例: class ArrayTool { //将构造方法私有,外界不能创建该类的对象 private ArrayTool(){} //遍历数组 public stat ...

  5. JavaSE基础之封装

    JavaSE基础之封装 一.Java中的封装 1.字面意思: 包装: 2.专业含义: 面向对象的三大特征之一: 指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所 ...

  6. Javase部分回顾(static (静态修饰符),修饰方法,单利的设计模式, 封装)

    static (静态修饰符)        1.修饰成员变量        静态变量的访问方式:            方式一 : 通过对象访问.                对象.变量名      ...

  7. JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)

    面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...

  8. JavaSE学习总结(五)——封装,继承,多态很简单

    java面向对象的三大特性是:封装.继承与多态,是面向对象编程的核心. 一.封装 简单说封装就是将同一类事物的特性与功能包装在一起,对外暴露调用的接口. 封装:封装也称信息隐藏,是指利用抽象数据类型把 ...

  9. JavaSE(二)之继承、封装、多态

    学习完类与对象终于认识到什么是类,什么是对象了.接下来要看的就是java的三大特征:继承.封装.多态. 一.封装(数据的隐藏) 在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部 ...

  10. Java 基础入门随笔(7) JavaSE版——面向对象定义、特征:封装、构造函数

    面向对象 面向过程:对于面向过程思想,强调的是过程(动作). 面向对象:对于面向对象思想,强调的是对象(实体). 特点: 1,面向对象就是一种常见的思想.符合人们的思考习惯.2,面向对象的出现,将复杂 ...

随机推荐

  1. CodeForces-213E:Two Permutations(神奇的线段树+hash)

    Rubik is very keen on number permutations. A permutation a with length n is a sequence, consisting o ...

  2. Wireshark抓包分析TCP协议

      版权声明:本文为作者原创文章,可以随意转载,但必须在明确位置表明出处!!! 之前有一篇文章介绍了http协议「初识http协议」, http协议协议是基于tcp协议的,所以作者觉得有必要针对tcp ...

  3. sass 基本语法

    sass语法 文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号. 而本教程 ...

  4. Tomcat相关的LNMT和LAMT

    Tomcat相关的LNMT和LAMT LNMT:Linux Nginx MySQL Tomcat Client (http) --> nginx (reverse proxy)(http) -- ...

  5. Luogu P1004/P1006 方格取数/传纸条 【棋盘Dp】 By cellur925

    我明明记得写过这篇啊qwq为什么会搞丢 两题几乎一样. 如果再拓展到k条路,就要用网络流跑了,本蒟现在还不会. 我们容易想到四维dp,但是有一种更好的方法. 首先,先从左上到右下.再从右下到左上可以近 ...

  6. 四大开源协议比较:BSD、Apache、GPL、LGPL【转载】

    四大开源协议原文链接 本文参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准 ...

  7. ubuntu14.04 + GTX980ti + cuda 8.0 ---Opencv3.1.0(基础+opecv_contrib)配置

    如果喜欢视频的话:YouTube 上有视频教程 https://www.youtube.com/watch?v=1YIAp3Lh5hI 后来我在mac上安装最新版的OpenCV 找到了一片非常详细的教 ...

  8. Spirng MVC +Velocity 表单绑定命令对象

    通常,表单中的数据在提交之后可以通过Spring MVC的@RequestParam注解在控制器函数的参数列表中中提取出来,但是一旦表单数据过多的话,参数列表将会变得非常长,最好的解决方案是将表单中的 ...

  9. rhel7安装oracle 11gR2,所需的依赖包

    binutils-2.23.52.0.1-30.el7.x86_64 compat-libstdc++-33-3.2.3-61.x86_64compat-libstdc++-33-3.2.3-61.i ...

  10. WCF中的异步实现

    对于WCF中通讯的双方来说,客户端可以异步的调用服务:服务端对服务也能以异步的方式实现. 目录: 1.WCF客户端异步调用服务 2.服务端的异步实现 WCF客户端异步调用服务主要通过生成异步的代理类, ...