JAVA自学教程之(封装及其思想)。封装(Encaplusation):
指:隐藏对象的属性和实现细节,只对外提供公共访问方式
优点: 1。将变化隔离 2.便于使用 3.提高重要性 4.提高安全性 封装原则: 1.将不需要对外提供的的内容隐藏起来
2.将属性隐藏,进对外提供其公共访问方式
事例代码:
- class man
- {
- private int age;//年龄
- private String sex;//性别
- public void change(int a,String b)
- {
- if(a < 0 || a>130)
- {
- System.out.println(“错误数据”);
- return ;
- }
- age = a;
- sex = b;
- fun();
- }
- void fun()
- {
- System.out.println(“age = “+age+”,sex = “+sex);
- }
- }
- public class Main
- {
- public static void main (String[] args)
- {
- man jo = new man();
- //jo.age = -20;这样就有不安全性,所以用private,将成员属性私有,外界就无法访问
- jo.change(20,”man”);
- }
- }
class man { private int age;//年龄 private String sex;//性别 public void change(int a,String b) { if(a < 0 || a>130) { System.out.println("错误数据"); return ; } age = a; sex = b; fun(); } void fun() { System.out.println("age = "+age+",sex = "+sex); } } public class Main { public static void main (String[] args) { man jo = new man(); //jo.age = -20;这样就有不安全性,所以用private,将成员属性私有,外界就无法访问 jo.change(20,"man"); } }
在实际开发过程中,已经形成了一种规范
书写规范:set(存放数据) 和 get(得到数据)
- class man
- {
- private int age;//年龄
- private String sex;//性别
- public void setage(int a,String b)//存放
- {
- if(a < 0 || a>130)
- {
- System.out.println(“错误数据”);
- return ;
- }
- age = a;
- sex = b;
- }
- public int getage() //获取
- {
- return age;
- }
- void fun()
- {
- System.out.println(“age = “+age+”,sex = “+sex);
- }
- }
- public class Main
- {
- public static void main (String[] args)
- {
- man jo = new man();
- jo.setage(20, “fa”);
- int ag = jo.getage();
- System.out.println(ag);
- }
- }
class man { private int age;//年龄 private String sex;//性别 public void setage(int a,String b)//存放 { if(a < 0 || a>130) { System.out.println("错误数据"); return ; } age = a; sex = b; } public int getage() //获取 { return age; } void fun() { System.out.println("age = "+age+",sex = "+sex); } } public class Main { public static void main (String[] args) { man jo = new man(); jo.setage(20, "fa"); int ag = jo.getage(); System.out.println(ag); } }
上述代码就是简单的封装性的体现,最明显的体现就是安全性,注意一点就是属性一般都是隐藏的。
封装的思想:
例子:各种电器就是一个很好的封装体,电器的开关,就是对外提供的访问方式,至于内部怎么访问,就不需要了解了,对用户是隐藏的。
当然,对象也是如此。
private 私有,是一个权限修饰符,权限最小,只能修饰成员,不能修饰局部 私有内容只在本类中有效 public 共有,权限最大
注意:private私有仅仅是封装的一种体现,私有是封装,封装并不代表私有
类、框架本身就是一个封装体
小练习:
封装完成,10个数的插入排序功能。
代码:
- import java.util.Scanner;
- import javax.naming.ldap.SortControl;
- class jo
- {
- public void set(int a[])//公共访问方式
- {
- intsrtsort(a);
- }
- private static void intsrtsort(int a[])//插入排序
- {
- int len = a.length;
- for(int i = 1;i<len;i++)
- {
- if(a[i] <a[i-1])
- {
- int t = a[i],j;
- a[i] = a[i-1];
- for(j = i-2;j>=0 && a[j] > t;j–)
- {
- a[j+1] = a[j];
- swap(a, j+1, j);
- }
- a[j+1] = t;
- }
- }
- }
- private static void swap(int a[],int x,int y)//改变数值
- {
- a[x] = a[y];
- }
- }
- public class Main
- {
- public static void main (String[] args)
- {
- int a[] = new int[10];
- Scanner cin = new Scanner(System.in);
- System.out.println(“输入10个数,实现插入排序:”);
- for(int i = 0;i<10;i++)
- {
- a[i] = cin.nextInt();
- }
- jo haha = new jo();//定义对象
- haha.set(a);//存放数据
- System.out.println(“排序结果如下:”);
- show(a);//显示结果
- cin.close();
- }
- static void show(int a[])
- {
- for(int i = 0;i < 10 ; i++)
- {
- System.out.print(a[i]+” “);
- }
- }
- }