封装
来源:互联网 发布:windows怎么截图窗口 编辑:程序博客网 时间:2024/05/21 04:47
封装
封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装就是将对象的属性和实现方式隐藏 只提供对外的公共的访问方式
好处:
(1)提高代码的复用性,
(2)提高代码的安全性,
(3)封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。
(4)降低软件的开发复杂度
(5)避免命名冲突
(6)良好的封装能够减少耦合。
(7)类内部的结构可以自由修改。
(8)可以对成员进行更精确的控制。
(9)隐藏信息,实现细节。
封装原则
1. 将不需要对外提供的内容都隐藏起来;
2. 把属性都隐藏,提供公共方法对其访问。
封装的优点
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
对象本身的属性创建的时候是私有的,外界无法访问,所以就要添加一个外界调用的公共方法(set( )设置属性的方法,get( )获取属性的方法)
如果该对象不需要外界调用就不用添加set()或者get()的方法,不过以后的情况谁也不知道,所以能够保留的还是要保留,
除非你确定这个方法以后都不会调用,可以不写;
构造函数
构造函数主要是在创建对象时,给对象赋值的;他是和new关键字 在一起使用的。他在一个类中可以存在多个;
特点:
(1)他的方法名和类名相同,没有返回值;
(2)在创建一个类的时候,如果你没有创建构造函数时,他会默认你存在一个无参的构造函数。如果你添加了一个有参的构造函数没有写无参的构造函数,
在你创建对象时,你就要写入参数,如果你需要创建无参的对象,你就要自己写一个无参的构造函数,因为你写了一个有参的,他就不会给你默认有无参
的函数了,所以你需要手动添加一个无参的构造函数。
(3)构造函数不能创建私有的,因为你创建一个私有的构造函数,而构造函数是在你创建对象时调用的,如果他是私有的,那他永远也不会调用。
(4)构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
类的终结函数
finalize 方法:
如果在类的层次结构中的类定义了 finalize 方法,子类finalize 方法的最后一个动作应该是 调用超类的 finalize 方法,以保证当垃圾回收器回收对象占据的内容时,对象的所有部分都能正常终止。
this
当成员变量和 局部变量同名的时候,为了区分,可以使用一个关键字来完成。
this:代表的是一个对象;代表那个对象呢?那个对象调用this所在的函数,this就代表那个对象。
this就是当前对象的一个引用。
表现形式1 :当局部变量和成员变量同名时,可以用this 来区分。
表现形式2 :构造函数之间的调用可以使用this关键字,后面跟上小括号,指定具体的实参即可明确要调用的构造函数。
注意:调用本类中构造函数的this语句必须定义在构造函数的第一行。 因为初始化动作要先完成。
实例
设置对象的set和get方法 set用于外界设置该属性的值或者改变他的值 get用于外界获取该属性的值
public class Student{private String name;private int age;/**无参的构造函数*/public Student ( ){}/**有参的构造函数*/public Student(String name,int age){this.name=name; //属性名相同的时候用this this.age=age;}/**获取name的值*/public String getName() {return name;}/**设置name的值*/public void setName(String name) {this.name = name;}/**获取age的值*/public int getAge() {return age;}/**设置age的值*/public void setAge(int age) {this.age = age;}/**main方法*/public static void main(String[] args) {this.test(); //用this调用方法,这个方法必须要写在第1行}public void test( ){}}
阅读全文
1 0
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- java web出现405已经导入jar包的正确方式
- mysql用命令修改数据库的用户名和密码
- Glide设置圆角图片后设置ImageVIew的scanType="centerCrop"无效解决办法
- Bus Hound 的使用方法
- 用栈实现快速排序
- 封装
- DataGridView单元格处于编辑状态触发KeyDown等事件
- SpringBatch_JUnit 错误积累
- oracle数据库的简单操作
- JavaScript流程控制---分支语句、循环语句练习题
- HDU 5538 House Building
- 【数据结构与算法之排序】归并排序
- 《SLF4J官方文档》SLF4J-FAQ 常见问题解答
- 飞塔NGFW-FortiGate-5.2(BYOL)