从我们的选择排序和冒泡排序里我们可以看到有很多相同的代码,
我们 可以把这些相同的代码提取出来封装为方法;比如我们的判
断交换和遍历输出:
抽取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()只是简单的把数据取出。
无焦点下获取条码枪返回值的Hook(再次改良版)
combining-filters
为Elasticsearch添加中文分词,对比分词器效果
ElasticSearch NEST搜索
How to write date range query in Nest ElasticSearch client?
ElasticSearch关联查找
form-inline+form-group 实现表单横排显示(Bootstrap)
Elastic Search 5.x Nest Multiple Queries C#
mysql 查看索引