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

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

断交换和遍历输出:

抽取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. 雷林鹏分享:C# 封装

    C# 封装 封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中".在面向对象程序设计方法论中,封装是为了防止对实现细节的访问. 抽象和封装是面向对象程序设计的相关特性. ...

  2. 中心极限定理 | central limit theorem | 大数定律 | law of large numbers

    每个大学教材上都会提到这个定理,枯燥地给出了定义和公式,并没有解释来龙去脉,导致大多数人望而生畏,并没有理解它的美. <女士品茶>有感 待续~ 参考:怎样理解和区分中心极限定理与大数定律?

  3. 20180226xlVbaGetStockData

    Sub LoopGetStockData() Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA.Timer Cells. ...

  4. n!的位数 斯特林公式

    #include<iostream> #include<cstring> #include<string> #include<cstdio> #incl ...

  5. 【模板/经典题型】树上第k大

    直接对树dfs一发,对每个节点建出主席树. 查询的时候主席树上二分,四个参数x+y-lca(x,y)-fa[lca(x,y)]. 如果要求支持动态加边的话,只需要一个启发式合并即可,每次暴力重构主席树 ...

  6. 「THUWC 2017」在美妙的数学王国中畅游

    这个题目很明显在暗示你要用泰勒展开. 直接套上去泰勒展开的式子,精度的话保留12项左右即可. 分别维护每一项的和,可能比较难写吧. 然后强行套一个LCT就没了.

  7. mybatis的update使用选择

    更新后台设置时,会分多个页面更新同一个表中的数据,愿想是尽量减少sql请求数据量并且减少重复代码. 比如博客园的: 假如只有一个用户信息表,这样的话每个页面只更新部分字段. 这种情况下的更新推荐在xm ...

  8. Golang 在 Mac、Linux、Windows 下如何交叉编译(转)

    原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...

  9. python使用SQLAlchemy模块连接MySQL

    ORM技术:Object-Relational Mapping,负责把关系数据库的表结构映射到对象上. 1.安装SQLAlchemy,MySQLdb模块 MySQLdb安装教程:http://www. ...

  10. Liunx 更新环境时用到的命令

    1.进入项目文件所在位置:cd/home/zhaorg/shelly62/apache-tomcat-7.0.5.2/bin 2.关闭服务:./shuntdown.sh或者 sh.shuntdown. ...