封装

来源:互联网 发布: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(  ){}}


原创粉丝点击