Java面向对象_封装的概述

一、封装的概述

       是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

       1.好处

             隐藏实现细节,提供公共的访问方式

             提高了代码的复用性

             提高安全性

      2.封装原则

             将不需要对外提供的内容都隐藏起来

             把属性隐藏起来,提供公共方法对其访问

二、如何去理解隐藏和提高安全性呢?通过一个例子

class Student {
	//姓名
	String name;
	//年龄
	private int age;
	
	//写一个方法对数据进行校验
	/*
		返回值类型:void
		参数列表:int a
	*/
	public void setAge(int a) {
		if(a < 0 || age > 120) {
			System.out.println("你给的年龄有问题");
		}else {
			age = a;
		}
	}
	
	
	//show()方法,显示所有成员变量值
	public void show() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}
}

class StudentDemo {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
		s.show();
		System.out.println("--------------");
		
		//给成员变量赋值
		s.name = "林青霞";
		//s.age = 27;
		s.setAge(27);
		s.show();
		System.out.println("--------------");
		
		//给age赋值
		//s.age = -27; //这个数据是不合理的
		//通过方法给值
		s.setAge(-27);
		s.show();
		System.out.println("--------------");
	}
}

我们对例子进行一下解析,首先这里有两个类,一个Student类和一个StudentDemo类

Student类:

学生姓名:name(默认权限,同一个包下的类都可以访问

学生年龄:age(private私有成员变量,只能在本类中使用

show()方法(public公有的成员方法)

StudentDemo类:

是一个单纯的测试类,在创建完学生对象后,可以修改其属性,修改的方式有两种

一种直接赋值,一种是通过set方法

                //给成员变量赋值
		s.name = "林青霞";
		//s.age =-27;
		s.setAge(27);

从上面两种赋值方式我们可以看到,直接赋值带来的后果是无论修改的是否合理,都可以修改,并且成功

而set方法就可以在方法中限制数据的规范。

问题是,如果人家就是不使用set方法呢?还是得任人宰割,这是很可怕的

所以,就把成员变量设置成private,意思这是我私有的,不想给你看到的,你想改就使用set方法吧!

这其实就是封装了。

猜你喜欢

转载自blog.csdn.net/elice_/article/details/82972492