JAVA自学教程之(封装及其思想)



JAVA自学教程之(封装及其思想)。封装(Encaplusation):
指:隐藏对象的属性和实现细节,只对外提供公共访问方式
优点: 1。将变化隔离 2.便于使用 3.提高重要性 4.提高安全性 封装原则: 1.将不需要对外提供的的内容隐藏起来

2.将属性隐藏,进对外提供其公共访问方式

 

事例代码:

  1. class man
  2. {
  3.     private int age;//年龄
  4.     private String sex;//性别
  5.     public void change(int a,String b)
  6.     {
  7.         if(a < 0 || a>130)
  8.         {
  9. System.out.println(“错误数据”);
  10.             return ;
  11.         }
  12.         age = a;
  13.         sex = b;
  14.         fun();
  15.     }
  16.     void fun()
  17.         {
  18.             System.out.println(“age = “+age+”,sex = “+sex);
  19.         }
  20. }
  21. public class Main
  22. {
  23.     public static void main (String[] args)
  24.     {
  25.         man jo = new man();
  26.         //jo.age = -20;这样就有不安全性,所以用private,将成员属性私有,外界就无法访问
  27.         jo.change(20,”man”);
  28.     }
  29. }
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(得到数据)

  1. class man
  2. {
  3.     private int age;//年龄
  4.     private String sex;//性别
  5.     public void setage(int a,String b)//存放
  6.     {
  7.         if(a < 0 || a>130)
  8.         {
  9.             System.out.println(“错误数据”);
  10.             return ;
  11.         }
  12.         age = a;
  13.         sex = b;
  14.     }
  15.     public int getage()  //获取
  16.     {
  17.         return age;
  18.     }
  19.     void fun()
  20.         {
  21.             System.out.println(“age = “+age+”,sex = “+sex);
  22.         }
  23. }
  24. public class Main
  25. {
  26.     public static void main (String[] args)
  27.     {
  28.         man jo = new man();
  29.         jo.setage(20, “fa”);
  30.         int ag = jo.getage();
  31.         System.out.println(ag);
  32.     }
  33. }
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个数的插入排序功能。

代码:

  1. import java.util.Scanner;
  2. import javax.naming.ldap.SortControl;
  3. class jo
  4. {
  5.     public void set(int a[])//公共访问方式
  6.     {
  7.         intsrtsort(a);
  8.     }
  9.     private static void intsrtsort(int a[])//插入排序
  10.     {
  11.         int len = a.length;
  12.         for(int i = 1;i<len;i++)
  13.         {
  14.             if(a[i] <a[i-1])
  15.             {
  16.                 int t = a[i],j;
  17.                 a[i] = a[i-1];
  18.                 for(j = i-2;j>=0 && a[j] > t;j–)
  19.                 {
  20.                     a[j+1] = a[j];
  21.                     swap(a, j+1, j);
  22.                 }
  23.                 a[j+1] = t;
  24.             }
  25.         }
  26.     }
  27.     private static void swap(int a[],int x,int y)//改变数值
  28.     {
  29.         a[x] = a[y];
  30.     }
  31. }
  32. public class Main
  33. {
  34.     public static void main (String[] args)
  35.     {
  36.         int a[] = new int[10];
  37.         Scanner cin = new Scanner(System.in);
  38.         System.out.println(“输入10个数,实现插入排序:”);
  39.         for(int i = 0;i<10;i++)
  40.         {
  41.             a[i] = cin.nextInt();
  42.         }
  43.         jo haha = new jo();//定义对象
  44.         haha.set(a);//存放数据
  45.         System.out.println(“排序结果如下:”);
  46.         show(a);//显示结果
  47.         cin.close();
  48.     }
  49.      static void show(int a[])
  50.     {
  51.         for(int i = 0;i < 10 ; i++)
  52.         {
  53.             System.out.print(a[i]+” “);
  54.         }
  55.     }
  56. }