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

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

断交换和遍历输出:

抽取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()只是简单的把数据取出。

 
 

第三节 java 函数的封装方法 以及 访问封装内容的更多相关文章

  1. 第三节 java 函数

    1.函数的定义 1.方法就是一段可重复调用的代码段 2.方法的格式1: 访问修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2){ //权限访问修饰符 : public protected ...

  2. Spark中Java函数的使用方法笔记

    1: map 函数map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD. 任何原RDD中的元素在新RDD中都有且只有一个元素与之对应. 2: mapPartitions函数</p ...

  3. JAVA组成原理及使用方法编辑环境及实现过程

    JAVA组成原理一.由四方面组成:1.Java编程语言2.Java类文件格式3.Java虚拟机4.Java应用程序接口 当编辑并运行一个Java程序时,需要同时涉及到这四种方面.二.使用文字编辑软件: ...

  4. 【原】Java学习笔记008 - 方法(函数)

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 方法/函数 Met ...

  5. Java&Selenium 模拟键盘方法封装

    Java&Selenium 模拟键盘方法封装 package util; import java.awt.AWTException; import java.awt.Robot; import ...

  6. Java&Selenium控制滚动条方法封装

    Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...

  7. Java ——对象 类 方法重载 构造方法 封装 内部类

    本节重点思维导图 快捷键 生成代码:alt+shift+s 提取变量:alt+shift+L 快速复制行:alt+ctrl+向上或向下的箭头 删除行:ctrl+d 类:对同一种事物共同属性和行为的抽象 ...

  8. 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?

      首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...

  9. [论文笔记] 一种Java遗留系统服务化切分和封装方法 (计算机学报, 2009)

    李翔,怀进鹏,曾晋,高鹏. 一种Java遗留系统服务化切分和封装方法. 计算机学报, 32(9), 2009, p1084-1815 (gs:5) 1. 本文研究从Java遗留系统中切分并封装出Web ...

随机推荐

  1. 批量显示QC结果的利器(转)

    作者:greenhillman MultiQC homepage: http://multiqc.info功能:把多个测序结果的qc结果整合成一个报告.支持fastqc.trimmomatic.bow ...

  2. 广播小案例-监听系统网络状态 --Android开发

    本例通过广播实现简单的监听系统网络状态改变的小案例. 1.案例效果演示 当手机连网后,系统提示“已连接网络”, 当手机断网后,系统提示“当前网络不可用”. 2.案例实现 在主活动中动态注册广播,然后写 ...

  3. Confluence 6 可以自定义的元素

    色彩配色方案允许你对 UI 中的元素色彩进行编辑,包括顶部条,标签页和背景色. 有一些下面的 UI 元素被用在特定的主题中,配色方案的修改可能不会对这些元素有效. 顶部条(Top Bar)—— 顶部导 ...

  4. mysql 时间戳转换 、cnd、dns 通俗理解

  5. python记录_day15 面向对象初识

    一.面向过程和面向对象 1.面向过程 以我为中心,做一件事先干什么,在干什么,后干什么,有一套清楚完整的流程.核心是“过程”. 优点:将要解决的问题流程化, 编写相对简单 缺点:可扩展性差 2.面向对 ...

  6. bzoj3676: [Apio2014]回文串 pam

    题意:字符串s.我们定义s的一个子串t的"出 现值"为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. 题解:pam板子题 //cnt数组表示该节点代表的 ...

  7. js时间与时间戳互相转换

    var _time1 = Date.parse(new Date(‘2017-05-02 00:00:00’))/1000; //将设定的日期转换为时间戳 _time1 = getLocalTime( ...

  8. virtualbox不能安装64位操作系统

    现在virtualbox 还是比较好用的虚拟机.新建立一个不同的操作系统还是非常方便. virtualbox下载地址  https://www.virtualbox.org/wiki/Download ...

  9. Mybatis自动生成实体类,映射文件,dao

    http://www.mybatis.org/generator/index.html 方法一:eclipse插件式 1.下载 mybatis-generator-core-1.3.2.jar 解压后 ...

  10. bootstrap table导出功能无效报错Uncaught INVALID_CHARACTER_ERR: DOM Exception 5和导出中文乱码问题

    由于表格数据中含有中文导致的,在网页的开发者选项中报一个 Uncaught INVALID_CHARACTER_ERR: DOM Exception 5 问题.这个问题是由于BootStrap tab ...