第三节 java 函数的封装方法 以及 访问封装内容

从我们的选择排序和冒泡排序里我们可以看到有很多相同的代码,

我们 可以把这些相同的代码提取出来封装为方法;比如我们的判

断交换和遍历输出:

抽取1: public static void PanDuan(int[] arr,int a,int b)

    if(arr[a] > arr[b]){

int temp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

抽取2:

public static void BianLi(){

System.out.print("{");

for(int b = 0;b < arr.length;b++){

if(b != arr.length-1){

System.out.print(arr[b]+",");

}else{

System.out.print(arr[b]+"}");

}

}

}

在整个java中,对于封装的访问给出了一个明确的原则,此原则必须遵守。

否则,因为属性或者方法被封装了,访问不了,会出错。

被封装的属性如果需要被访问,则需要编写setter和getter方法完成。

例如,现在有一个属性:private string name;

Setter():public void setName(String n){};

Getter():public String getName(){};

例子:

复制代码
class Person{
private String name ;    // 声明姓名属性 
private int age ;    // 声明年龄属性
public void setName(String n){    // 设置姓名   (快速set根get方法:鼠标右键  -  Source - Generare Getters and Setters...)
name = n ;
}
public void setAge(int a){    // 设置年龄
if(a>=0&&a<=150){    // 加入验证
age = a ;
}
}
public String getName(){    // 取得姓名
return name ;
}
public int getAge(){    // 取得年龄
return age ;
}
public void tell(){
System.out.println("姓名:" + this.getName() + ",年龄:" + this.getAge()) ;
}
};
public class EncDemo05{
public static void main(String arsgh[]){
Person per = new Person() ;    // 声明并实例化对象
per.setName("张三") ;    // 调用setter设置姓名
per.setAge(-30) ;    // 调用setter设置年龄
per.tell() ;    // 输出信息
}

以上代码只是可以访问封装的属性,但是并没有加入到检测的措施。

如果年龄设置有问题,则不应该为属性赋值。

应该在哪个方法中加入检验呢?

.setter()中加入检验;(判断语句)

.getter()只是简单的把数据取出。

 
原文地址:https://www.cnblogs.com/xiaoshuaidiboke/p/7143451.html