java oo 封装_javaOO——封装、static、成员内部类
访问修饰符:
包外 子类 包内 类内
public yes yes yes yes
protected no yes yes yes
default no no yes yes
private no no no yes
标准Java类----(JavaBean)
(1)必须要有公共无参构造
(2)必须为私有属性提供符合命名规范的get和set方法
封装的好处:
1、类的成员变量可以成为只读或者只写的
2、类可以对存储在其成员变量张的内容有一个整体的控制
3、类的用户不需要知道类是如何存储数据的
static修饰属性
1、现象:用static修饰的属性,全类共享一个值。
static修饰的属性将不再存放在每个对象身上,而是全类共享。
无论哪个对象对该属性进行了改动,全类所有对象都被改动了。
2、原因:static的属性是单独存放在内存中的静态区,而不是存放在每个对象身上的。
所以它可以直接通过 类名. 的方式就可以操作。
3、特殊操作,它可以直接通过 类名. 的方式就可以操作
---这是结果而不是设计static的原因
注意:能用static修饰的属性其实是极少的,除非你能真正保证它是全类共享的一个值,否则是不允许的。
static修饰的属性什么时候放入内存呢?
它会在程序运行之前,即加载期的时候就会产生并让放入。
使用最多?--常量属性可以无脑设计加“static”
public static final .....
static修饰方法
1、现象:
(1)可以直接通过 类名. 的方式就可以操作
(2)static的方法中不能出现this和super
(3)static的方法中,不能访问非static的属性和行为
2、原因:
加载期,会首先加载静态方法和属性,这个时候还没有对象产生。
在加载静态方法的时候还不认识非静态的属性或非静态的方法,因此会报错。
3、特殊设计:
只有工具类的工具方法,才能定义为static。
---如果一个方法不需要执行到对象本身相关的数据或行为的时候,那么这个方法才可以定义为static
初始化块 ---能在一个类里面写的第四种东西(属性,初始化块,构造,行为)
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在初始化对象(new对象)被自动调用,每产生一个对象,就被调用一次。
分析:
1、都是代码块,都已经有当前对象,所以凡是可以写在初始化块中的代码,也可以写在构造函数中
2、构造方法内部的代码是在实例初始化之后执行的最终效果以构造为准。
结论:
初始化一个对象要写的代码语句,宁愿写在构造函数里面的。
如何使用呢?
本类所有构造方式都要执行的共有代码,可以写在实例初始化块,只需要写一次。
这个功能和this()一样。
初始化块在什么时候执行?
分配空间
划分属性
初始化属性
(执行初始化块)
执行构造函数中的代码
静态初始化块
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在类加载的时候就被自动调用。由于一个类只加载一次(第一次使用的时候),所以这个代码只执行一次。
分析:
1、这是目前我们学的唯一一个在加载期就能执行的代码。
2、在加载期做事情,消耗的是加载期的时间,不会影响运行期事件
结论:
静态初始化块,挺有用的。
特别是一些大型项目,一些预先需要准备的动过可以写在里面,从而不影响运行时间。
可以在一个类当中定义的第五部分 --内部类
内部类分类:1、成员内部类 2、局部内部类
成员内部类
书写位置:直接写在外部类本身当中,与外部类的属性,构造,行为,初始化块平行。
成员内部类除了定义的位置特殊之外,它仍是一个完整的类。
表现在:
1、可以拥有属性,构造,行为,初始化块,甚至是它的内部类。
2、它是一个独立的类,所以有独立的class文件
3、成员内部类可以像属性、行为、初始化块一样,用static修饰 ---静态内部类
java oo 封装_javaOO——封装、static、成员内部类相关推荐
- JAVA day07 权限,封装,JavaBean(规范代码),static、final关键字
1.权限 在Java中提供了四种访问权限,使⽤不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限: public:公共的 protected:受保护的 default(friendly):默认 ...
- java三大特性:封装、继承、多态
2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...
- Java的知识点31——封装拷贝、封装释放、实现放大器对声音的放大功能
封装拷贝.封装释放 package cn.dym;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...
- Java基础篇:封装、继承、多态三大特性
目录: 一.Java三大特性之:封装 二.Java三大特性之:继承 三.Java三大特性之:多态 一.Java三大特性之:封装 1.什么是封装: 封装,就是将数据和基于数据的操作封装在一起,数据被保护 ...
- java 文件封装_Java 封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随 ...
- JAVA调用接口简单封装,Mvp+Retrofit2+RxJava2 项目中使用的简洁封装
Retrofit2 + RxJava2 是一个强大的组合,完成一系列网络请求 MVP当前用的很多的一种框架,Model+View+Presenter 本文记录了作者在项目中对 Retrofit2 + ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- java面向对象的特征封装_Java总结-Java面向对象的基本特征之一:封装性
作者:nyist-tc-岑国玉 来源:牛客网 Java面向对象的基本特征之一:封装性 封装性: 1.封装性的目的:保护某些属性和方法不被外部所看见. //这里说一下自己学linux时老师教我这个封装类 ...
- java有理数类的封装_【Java笔记】有理数的类封装
分数是有理数(Rational),我们经常做分数的四则运算得到的是小数,如果我们运行分数的四则运算想要得到分数,要怎样做呢? 用类实现对有理数的封装可以做到. 有理数有两个重要的成员,即分子(nume ...
最新文章
- 动态代理机制之查看一个类或接口中有哪些方法
- 分享一篇关于使用阿里云消息队列中遇到的坑
- signature=d60f979e909db97dbaa034ebe539f2fd,Experimental signatures of fermiophobic Higgs bosons
- python导入sas数据集_运用import过程进行SAS数据导入完全实用教程
- python选定区域设置边框_Python教程:巧用openpyxl为指定区域设置边框为粗匣框线...
- 【算法】Huffman编码(数据结构+算法)
- MySQL中concat()与group_concat()用法
- Ubuntu 16.04 解压rar问题解决方案
- 读EasyPR开发详解实践感想1
- 更新浏览器CSS样式表
- postgres整库导入导出
- 银联支付接口+支付宝接口统一支付功能
- 奥克兰大学计算机专业好找工作吗,留学选择奥克兰大学的计算机专业肯定不会后悔...
- BVH with SAH (Bounding Volume Hierarchy with Surface Area Heuristic)
- 光衰高怎么办_灯太亮了怎么办 led灯该如何选择
- golang中GDK和UTF8编码转换
- python 炒股公式_计算股票公式
- iOS开发者证书介绍与总结
- 为什么计算机中的负数要用补码表示?
- JavaScript快速入门到高级 JS精品视频课程