[Java面向对象]封装
2015-12-06 22:24
344 查看
上篇文章介绍了Java语言的面向过程部分,接下来就要进入Java的精华部分—面向对象。面向对象说起来自己也接触一年了,在学习VB.Net、C#、设计模式的时候都在介绍面向对象,机房收费系统重构版就是使用VB.Net编写的。也正因为如此,对于面向对象中涉及到对象、类、接口等知识也有总结。
Java和这几门语言大同小异,面向对象部分主要是针对OO三大特性的学习—封装、继承和多态。今天就来谈一谈封装,看看封装中的那些事儿。
封装:封装在定义类的同时使用,其作用就是隐藏对象的属性和实现细节,仅提供对外公共访问方式。举一个现实中的例子,工具盒里面有各种型号的螺丝刀,这就是一种封装,我们在使用的时候不用再到处去找某种型号的螺丝刀,只要找到工具盒再去使用其中的工具就OK了。这就是一种封装。
在Java中最常见用的就是对代码的封装,Java里用“{}”来限定一段代码的声明周期,{代码段}在不同的位置其所起到的作用也不一样。常见的有三种:局部代码快、构造代码块、静态代码块。
局部代码块:在构造方法或者成员方法中;
构造代码块:由于方法重载的存在,类可以有诸多个构造方法或者成员方法。构造代码块经常定义在构造方法之外,用于提取方法中公共部分。
静态代码块:简单点儿来说就是用static修饰的构造代码区。在代码中实现如下:
代码区所处的位置不同,其运行的结果也不相同,通过代码实现来看看它们之间的区别:
输出结果:
从运行后的结果可以总结出这三个代码块的作用:
局部代码块:用于限定变量的生命周期,当程序运行到代码区之后便会释放,这样做能提高内存利用率。
构造代码块:构造代码块运行在构造方法之前,每一次实例化类都首先要调用构造代码块的内容。
静态代码块:在内存中随着类第一次加载而对其中的数据进行初始化,仅仅只执行一次。
Java和这几门语言大同小异,面向对象部分主要是针对OO三大特性的学习—封装、继承和多态。今天就来谈一谈封装,看看封装中的那些事儿。
封装:封装在定义类的同时使用,其作用就是隐藏对象的属性和实现细节,仅提供对外公共访问方式。举一个现实中的例子,工具盒里面有各种型号的螺丝刀,这就是一种封装,我们在使用的时候不用再到处去找某种型号的螺丝刀,只要找到工具盒再去使用其中的工具就OK了。这就是一种封装。
代码块
在Java中最常见用的就是对代码的封装,Java里用“{}”来限定一段代码的声明周期,{代码段}在不同的位置其所起到的作用也不一样。常见的有三种:局部代码快、构造代码块、静态代码块。 局部代码块:在构造方法或者成员方法中;
构造代码块:由于方法重载的存在,类可以有诸多个构造方法或者成员方法。构造代码块经常定义在构造方法之外,用于提取方法中公共部分。
静态代码块:简单点儿来说就是用static修饰的构造代码区。在代码中实现如下:
<span style="font-family:Microsoft YaHei;">public class Student { //学生类 static{ 静态代码区; } { 构造代码区; } public Student() { //构造方法 { 局部代码区; } } }</span>
代码区所处的位置不同,其运行的结果也不相同,通过代码实现来看看它们之间的区别:
<span style="font-family:Microsoft YaHei;"> //定义学生类 public class Student { //静态代码区 static{ System.out.println("HelloWord");//输出语句 } //构造代码区 { System.out.println("HelloJava");//输出语句 } public Student() { //局部代码区 { int varian =0; System.out.println("varian="+varian);//输出语句 } } public static void main(String[] args) { Student studentOne=new Student(); Student studentTwo=new Student(); } }</span>
输出结果:
从运行后的结果可以总结出这三个代码块的作用:
局部代码块:用于限定变量的生命周期,当程序运行到代码区之后便会释放,这样做能提高内存利用率。
构造代码块:构造代码块运行在构造方法之前,每一次实例化类都首先要调用构造代码块的内容。
静态代码块:在内存中随着类第一次加载而对其中的数据进行初始化,仅仅只执行一次。
总结:
在用VB.Net重构机房的时候,在程序中也使用到对方法的封装。但只是将方法写到模块里面,在其他类中直接调用即可,没有使用到以上介绍的三类代码块,今天的内容也算是对面向对象知识的补充。在知识的海洋里,作为一叶扁舟还是要汲取力量,不断前进。On the way....相关文章推荐
- eclipse 如何让eclipse启动更快
- eclipse常用调试
- SpringMVC_上传图片
- java 泛型问题 关于警告XXX is a raw type
- eclipse 界面定制,让eclipse看着更清爽
- Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件
- Java API —— Calendar类
- Java API —— DateFormat类
- 栈与队列之用java实现队列
- struts2 OGNL表达式
- 装饰器模式之java IO流
- Java API —— Date类
- java编程规范
- jvm内存溢出问题解决
- java 生成word文档
- Java线程中run和start方法的区别
- spring的事件驱动体系介绍
- Struts2_学习笔记(三)--------Action接收参数的四种方法
- 关于eclipse android ctrl + 左键(鼠标左键)直接打开xml文件
- java 自定义封装jdbc dao类