Java 第16章 封装
封装(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章 封装的更多相关文章
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- JAVA基础第二章-java三大特性:封装、继承、多态
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- 设计模式之第16章-代理模式(Java实现)
设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫 ...
- 第16章 List集合的总结和遍历
第16章 List集合的总结和遍历 1.重构设计 根据Vector类,ArrayList类,和LinkedList类所具有的存储特点以及拥有的方法入手,发现共性往上抽取. 共同特点: 1.允许元素重复 ...
- Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件
Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- java中基本类型封装对象所占内存的大小(转)
这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字. 实现的想法是这样的:java.lang.Runt ...
- 第16章 观察者模式(Oberver Pattern)
原文 第16章 观察者模式(Oberver Pattern) 观察者模式 概述: 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依 ...
随机推荐
- GridView控件RowDataBound事件中获取列字段途径
今天不知道怎么回事怎么也找不到gridview列中的控件,关键是其为编辑时隐藏域中的控件,取值就很成问题了,网上搜了很到,找到这个比较经典的东东了,可能大家都知道,但很少对比整理到一起,有多种方法可以 ...
- nagios二次开发(四)---nagios监控原理和nagios架构简介
nagios监控原理 下面根据上面摘自网络的原理图对nagios的监控原理进行一下简单的说明: 1.nagios通过nsca进行被动监控.那么什么是被动监控呢?被动监测:就是指由被监测的服务器主动上传 ...
- 个人关于React的一些理解
##React背景 React是当前前端最火的框架,它的理念思想及构建方法比AngularJS更适合做webApp. 它是由facebook团队研发并开源到社区,所以它有很强大的技术背景,而且它的架构 ...
- C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命
使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠 ...
- HTML5 --照抄书里的代码但函数无法执行、求分析( Uncaught ReferenceError: xxx is not defined)
在js文件里写一个方法传参数: moveElement(id,name,price) { alert("id:"+id+"name:"+name+"p ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- PL/SQL安装部署配置(配图解)
PL/SQL安装部署配置 下载好安装包之后,双击exe程序 双击安装程序,出现如下页面 点击[NEXT],出现如下界面 选择[I Accept...],点击[NEXT],出现如下界面 选择安装路径,点 ...
- DUILIB 实现微信气泡聊天效果
最近由于项目原因,需要做一个产品内嵌的IM聊天系统.而且要象微信类似的效果:界面也要比较炫: 开始考虑用MFC,但MFC的控件自绘很麻烦,后来又考虑QT,倒是使用控件使用方便,但QT库太大,所以也放弃 ...
- (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 方法/步骤 首先 ...
- java javacv调用摄像头并拍照
调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...