java OOP第二章_封装
一、 封装:
属性通过private访问修饰符将其设置为私有的,只有当前类中可以访问,同时提供通过public访问修饰符的公共方法可以给任何类中访问。
通常针对属性提供公共的setter方法进行赋值,提供公共的getter方法进行取值,若需要的情况下可以在方法中添加一些逻辑判断代码保证数据的安全性。
代码参见:
com.oop.ch02.Dept
com.oop.ch02.Emp
1、八种基本数据类型对应的有八种引用数据类型(包装数据类型),
* byte short int long loat double char boolean
* Byte Short Integer Long Float Double Character Boolean
注:当基本数据类型的值转为引用数据类型的值(包装数据类型)时称为“自动装箱”,反之为“自动拆箱”。
2、实体需要满足的条件:
实体是一种特殊的Java类,主要用于对象模型和关系模型之间的关系传递的媒介,他要满足如下几个条件。
1) 要有与数据表字段相对应的属性
2) 提供属性对应的getter和setter方法
3) 提供有参和无参的构造方法
4) 重写toString()方法,方便在输出对象时以字符串的形式显示属性,方便我们调试程序。
二、 构造方法:
1、 为什么要使用构造方法:
构造方法是用于创建对象的特殊方法,只有通过构造方法才能创建对象。
2、 构造方法的特点:
a) 构造方法的名称必须与类名相同(首字母大写)
b) 构造方法不能写返回值类型,也不能写void
c) 构造方法也可以重载
d) 当定义一个类时,他就有一个默认不带参数的构造方法,但当定义了带参数的构造方法后,他就会自动消失,
因此当定义了带参数的构造方法的时候,都需要再定义一个带参数的构造方法。
三、 方法的重载(Overload):和参数有关,与返回值无关
方法名称相同,参数不同的方法称为重载的方法,参数不同指的是参数的“类型”、“个数”、“顺序”不同,因为系统在比较时是“按位比较”的。
重载是发生在同一个类的多个方法之间,重写(override)是发生在多个类的方法之间。 重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,
所以 Java 的构造方法是不能被重写的。而重载是针对同一个类的,所以构造方法可以被重载。 重写是父子之间的关系,重载发生在同一个类中。 四、 This关键字:
This是第一人称代词,当一个对象在调用某个属性或者方法时,this表示该对象(Dept)本身,通过this就能区分不同对象拥有的属性或方法。
五、 Static关键字:
1、Static是“静态的“,可以修饰类、属性、方法、代码块。
2、使用static修饰的属性和方法是类级别的,可以通过“类名.属性名“或”类名.方法名“直接访问静态属性或静态方法。
3、在静态方法或静态代码块中只能访问静态的属性或静态的方法,而不能访问非静态的属性或非静态的方法,
但非静态的方法中既可以访问静态的属性和静态的方法,也可以访问非静态的属性或非静态方法。
4、Static修饰的代码块称为静态代码块,是在类被加载时会自动调用一次;而构造方法是在每创建一个对象时都会被调用一次。
5、static可以定义静态常量,该常量是变量的一种特例,他的值必须在定义时就赋值,以后就不能再被更改。
六、 Final关键字:
Final是“最终“的意思,final修饰类表示该类不允许其他类来继承;
final修饰属性(成员变量)表示该变量是一个常量,它的值不允许再改变;
final修饰方法表示该方法不能被重写。
七、 成员变量和局部变量:
成员变量:定义在类中方法外的变量,从范围上来说是该类中所有方法都能访问的变量;成员变量在定义时可以不赋值,系统会自动根据类型赋默认值。
局部变量:定义在类的方法之中的变量,从范围上来说只有本方法才能访问的变量;局部变量在定义时可以不赋值,但在使用前必须要赋值。
java OOP第二章_封装的更多相关文章
- Java OOP——第二章 继承
1. 继承: ●继承是面向对象的三大特征之一,是JAVA实现代码重用的重要手段之一: ●继承是代码重用的一种方式,将子类共有的属性和行为放到父类中: ●JAVA只支持单继承,即每一个类只有一个父类,继 ...
- “全栈2019”Java多线程第二章:创建多线程之继承Thread类
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第二章:如何处理异常?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- JAVA基础第二章-java三大特性:封装、继承、多态
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java编程思想_笔记_第二章_一切都是对象
第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...
- 深入理解java虚拟机_第二章_读书笔记
1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 ...
- Java OOP——第一章 对象和封装
1.软件出现的目的: 用计算机的语言描述现实世界 用计算机解决现实世界的问题 ◆面向对象设计和开发程序的好处: 交流更加流畅 提高设计和开发效率 计算机语言的发展向接近人的思维方式演变 ...
- JAVA 入门第二章 (面对对象)
本渣渣鸽了一个月终于有时间更新.因为有c++基础,学起来这章还是比较简单的,本章我觉得是程序猿质变课程,理解面向对象的思想,掌握面向对象的基本原则以及 Java 面向对象编程基本实现原理,熟练使用封装 ...
- Upgrading to Java 8——第二章 Method References(方法引用)
概述 很多java 方法会使用函数式接口作为参数.例如,java.util.Arrays类中的一个sort方法,就接受一个Comparator接口,它就是一个函数式接口,sort方法的签名如下: pu ...
随机推荐
- SQL Serve2008的一些操作
今天花了一下午的时间在熟悉SQL serve的一些操作,在此记录下学习到的东西: 首先创建数据库: use master --设置当前数据库为master,以便方便访问表sysdatabases if ...
- 线程创建后为什么要调用CloseHandle
很多程序在创建线程都这样写的: ............ ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); ...
- HTML中<frameset>标签不显示的问题
啥都不说,先上代码 <html> <head> <title>index</title> <meta content = 'text/html'; ...
- ulimit - 获取和改变用户的限制设定
大纲 #include <ulimit.h> long ulimit(int cmd, long newlimit); 描述 警告: 这个函数已经被废弃. glibc 不再提供这个包含文件 ...
- 类 __init__的注意事项
class Dog(): class类 后面的ClassName类名第一个字母一定要大写. def __init__(self,name,age): 注意init前后是英文格式下,前后都是两道 ...
- 微信公众号开发上传图文素材带有卡片小程序报错:errcode=45166,errmsg = invalid content hint
微信公众号开发自从支持允许在群发图文中插入小程序,方便了小程序的运营及推广.最近在三方服务开发中,要支持图文素材插入小程序遇到了一个很是棘手的问题.官方给出的插入小程序的示例支持文字.图片.卡片.如下 ...
- Vue for循环 例子
demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...
- ES6-let cont 关键字
***let1. 作用: * 与var类似, 用于声明一个变量2. 特点: * 在块作用域内有效 * 不能重复声明 * 不会预处理, 不存在提升3. 应用: * 循环遍历加监听 * 使用let取代va ...
- 【SGU194】Reactor Cooling
题目大意 给定一个无源无汇的网络,边的容量有上下界限制,试构造一个合理的流量. 题目分析 求无源汇上下界的可行流模板题. ①增加一个附加源和汇\(S,T\). ②把每个节点的\(\sum b_{u,i ...
- Web API 接口参考
Web API 接口参考:https://developer.mozilla.org/zh-CN/docs/Web/API