面向对象三大特性:封装、继承、多态
封装在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属性赋值。