标签:
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。
对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。
使用封装有四大好处:
1、良好的封装能够减少耦合。
2、类内部的结构可以自由修改。
3、可以对成员进行更精确的控制。
4、隐藏信息,实现细节。
package jin.feng1; public class Cookie2 //此类必须是public否则类不能挎包访问 { public int i; public Cookie2(int i){this.i=i;} public void print(){ System.out.println("i:"+this.i); } } package jin.feng2; import jin.feng1.Cookie2; public class Access { public static void main(String[] args) { Cookie2 cie2=new Cookie2(3); cie2.print(); } }
package jin.feng1; public class Cookie2 { protected int i; public Cookie2(int i){this.i=i;} protected void print(){//包访问权限 System.out.println("i:"+this.i); } } package jin.feng2; import jin.feng1.Cookie2; public class Access extends Cookie2 { public Access(){ //如果基类的构造函数带参数,则派生类必须显示声明构造函数。 super(3); print(); //类内部直接访问,派生类直接访问 } public static void main(String[] args) { //Cook1 cook1=new Cook1(1, 2); Access asAccess=new Access(); asAccess.i=9; //通过对象访问。 asAccess.print(); } }
class Cook1{ int i;//包访问权限 int j;//包访问权限 public Cook1(int i,int j){ this.i=i; this.j=j;} void print(){//包访问权限 System.out.println("i:"+this.i+" j:"+this.j); } } public class Access { public static void main(String[] args) { Cook1 cook1=new Cook1(1, 2); cook1.print();//该类的对象可以在包内访问具有包访问权限的成员变量/方法 cook1.i=9;//该类的对象可以在包内访问具有包访问权限的成员变量/方法 cook1.print(); } }
class Cook1{ private int i; int j; public Cook1(int i,int j){ this.i=i; this.j=j;} private void print(){ System.out.println("i:"+this.i+" j:"+this.j); } } public class Access { public static void main(String[] args) { Cook1 cook1=new Cook1(1, 2); cook1.print();//出错,不可访问私有成员方法 cook1.i=9;//出错,该类对象不可访问私有成员变量 cook1.j=10;
标签:
原文地址:http://blog.csdn.net/xu5025/article/details/42273811