封装(encapsulation)
    类使得数据和对数据的操作集成在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。

封装 ,

使用类图描述类

用于分析和设计 《类》 直观、容易理解

对象初始化

使用构造方法: Penguin pgn1 =new Penguin();

构造方法

无返回值类型 ,与类名相同

访问修饰符  构造方法名 //可以指定参数 (){

//初始化代码

}

示例 : public Penguin(){

// 系统提供默认无参构造方法

}

自定义构造方法:

系统不再提供默认无参构造方法

public Penguin(){

name =“qq”;         //方法名相同                       }

love=20;               //参数项不相同                    }  方法重载

sex=“Q仔”;          //与返回值、访问修饰符无关     }

this.name =name;

this.health=health;

this.love=love;

this.sex=sex;

备注: this 关键字是对一个对象的默认引用,这里用以区分同名成员变量

调用默认无参构造方法,有返回值类型,不是构造方法!

static 关键字

使用 static 定义变量 用 final 修饰的变量称为常量,其值固定不变

使用static 定义方法

static void print(){}用类名调用:Penguin.print();

静态常量     注: 在方法里不可以定义static 变量

Dog d =new Dog();

d.health =-1000;

属性随意访问,不合理的赋值

如何解决上面设计的缺陷? 使用封装

什么是封装:

面向对象三大特征之一   --> 封装 封装的概念

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法

来实现对隐藏信息的操作和访问。

封装的好处:

1 只能通过规定方法访问数据

2 隐藏类的实现细节

3 方便修改实现

4 方便加入控制语句

封装步骤:

1.修改属性的可见性  -->设为 private

2. 创建公有的 getter/setter 方法 -->用于属性的读写

3. 在getter /setter 方法中加入属性控制语句 -->对属性值的合法性进行判断

this 关键字的用法

调用属性

this.health =100;

this.name=“大黄”;

调用方法

this.print();

调用构造方法

this ();

this("小黑", 100,100,"雄"); -->如果使用,必须是构造方法中的第一条语句

重点: //构造方法不能被子类继承

//子类可以调用父类的构造方法,

//如果手动添加了带参数的构造方法,同时添加上无参构造方法

//如果调用子类的构造方法,如果不显示的调用父类的构造方法,

默认调用的是父类的无参构造方法 。

//所有类的父类是 Object

备注://方法的重载定义:方法名相同、参数列表不同,与方法的访问修饰符,返回值类型无关

(构造方法是方法重载的特殊)

2、 //方法重写的定义:方法名相同,参数列表相同,返回值类型相同或是其子类,

访问权限不能严于父类 。

Java 第16章 封装的更多相关文章

  1. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  2. 《深入Java虚拟机学习笔记》- 第16章 控制流

    <深入Java虚拟机学习笔记>- 第16章 控制流

  3. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  4. 设计模式之第16章-代理模式(Java实现)

    设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫 ...

  5. 第16章 List集合的总结和遍历

    第16章 List集合的总结和遍历 1.重构设计 根据Vector类,ArrayList类,和LinkedList类所具有的存储特点以及拥有的方法入手,发现共性往上抽取. 共同特点: 1.允许元素重复 ...

  6. Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件

    Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统  nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...

  7. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  8. java中基本类型封装对象所占内存的大小(转)

    这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字. 实现的想法是这样的:java.lang.Runt ...

  9. 第16章 观察者模式(Oberver Pattern)

    原文  第16章 观察者模式(Oberver Pattern) 观察者模式  概述:   在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依 ...

随机推荐

  1. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  2. 【转】NVelocity模板引擎初学总结

    转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...

  3. sqlserver存取过程-游标

    ALTER proc [dbo].[common_proc_temp2] as  begin declare @id varchar(50); declare @cbcontractid varcha ...

  4. JSON文本转换为JSONArray 转换为 List<Object>

    package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import java.util.Arr ...

  5. 安装oracle ebs 出现问题 atleast 55M of disk space

    出现这个问题 可以进行如下尝试: 1.登陆用户是否具有管理员权限,可以右击exe用管理员登陆. 2.安装电脑是否有安装mcafee,可以禁用后运行. 3.看下C:\Documents and Sett ...

  6. 初学c# -- 学习笔记(三)

    结合前面学的许多东西,写了一个小程序.会话.自定义滚动条.css等等.小程序没有用数据库,主要不知道该用哪种,以后再说吧.登录也简单,就输入用户名就可以了. 百度是个好东西,写程序时候,需要什么图就直 ...

  7. I/O流——File类及使用

    I/O框架介绍 I/O是计算机输入/输出的接口.Java的核心库java.io提供了全方面的I/O接口,包括:文件系统的操作,文件读写,标准设备的输出等. File类及使用 ①   一个File类的对 ...

  8. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. C语言fgetpos()函数:获得当前文件的读写指针(转)

    头文件:#include<stdio.h>fgetpos()函数获得当前文件的指针所指的位置,并把该指针所指的位置信息存放到pos所指的对象中.pos以内部格式存储,仅由fgetpos() ...

  10. Android版本4.0~7.0

    Android 4.0 Ice Cream Sandwich(冰激凌三明治):2011年10月19日发布 版本主要更新如下:全新的UI:全新的Chrome Lite浏览器:截图功能:更强大的图片编辑功 ...