学习笔记--面向对象与封装(六)封装的概念

面向对象三大特性:封装、继承、多态

封装在java当中的体现:
1.方法就是一种封装
2.关键字private也是一种封装

封装就是将一些细节信息隐藏起来,对于外界不可见

package com.wadedt.day06.demo04;

public class Demo02Method {
	public static void main(String[] args){
		int[] array = {10,20,50,80,100};
		int max = getMax(array);
		System.out.println("最大值是:"+max);
		
	}
	public static int getMax(int[] array){
		int max = array[0];
		for(int i=1;i<array.length;i++){
			if(array[i]>max){
				max = array[i];
			}
		};
		return max;
	}
}

上面的代码是求一个数组中的最大值,我们定义了一个方法getMax();我们只要在main方法中调用getMax,不用关心具体是如何实现的,这个就是在java中的封装。

private关键字的作用和使用

我们来定义一个Person类

问题描述:定义person的年龄时,无法阻止不合理的数据被设置进来。
解决方案:用private关键字将需要保护的成员变量进行修饰

一旦使用了private,那么本类中仍然可以随意访问。
但是超出了本类就不能直接访问。

间接访问private成员变量就是设置一对Getter/Setter方法

必须叫getXxx和setXxx的命名规则
对于Getter来说,不能有参数,返回值类型和成员变量对应
对于Setter来说,不能有返回值,参数类型和成员变量对应

package com.wadedt.day06.demo04;

public class Person {
	String name;
	private int age;
	public void show(){
		System.out.println("我是"+name+",今年"+age+"岁");
	};
	//这个成员方法专门用于向成员变量age设置数据
	public void setAge(int num){
		if(num < 100 && num >=9){//如果是合理情况
			age = num;
		}else{
			System.out.println("数据不合理");
		}
	}
	//这个成员方法专门用于获取成员变量age的数据
	public int getAge(){
		return age;
	}
}

在这个Person类当中。成员变量age 使用了private关键字修饰,name没有用private修饰。
当我们在其他类当中创建一个person对象时,代码如下

package com.wadedt.day06.demo04;

public class Demo03Person {
	public static void main(String[] args){
		Person person = new Person();
		person.show();
		person.name = "fairy";
		//person.age = 18;//错误
		person.setAge(18);
		person.show();
	}
}

由于age用了private修饰,所有在其它类中不能再使用person.age去给新建的对象的age属性赋值。

你可能感兴趣的:(java学习)