封装:把一类事物的特性抽象出来,比如方法和属性,并用代码包装起来,以结果为导向,忽略具体实现过程,即为封装。

思路:

1.封装类

class 类名{

成员属性定义;

构造函数(或构造器);

成员方法定义并输出;

}

2.加载类对象,初始化属性

TestClass   类名{

初始化对象并赋值;

再调用;

}

代码举例:

 1 public class Teacher1{
 2     private String name;
 3     private int age;
 4     private char gender;
 5     private String majorField;
 6     public String getName(){
 7         return name;
 8     }
 9     public void setName(String name){
10         this.name=name;
11     }
12     public int getAge(){
13         return age;
14     }
15     public void setAge(int age){
16         if(age<0 || age>100){
17         this.age=30;
18         System.out.println("年龄应该在0到100之间,默认为30");
19     }else{
20         this.age=age;
21     }
22 }
23 public char getGender(){
24     return gender;
25 }
26 public void setGender(char gender){
27     this.gender=gender;
28 }
29 public String getMajorField(){
30     return majorField;
31 }
32 public void setMajorField(String majorField){
33     this.majorField=majorField;
34 }
35 public Teacher1(){
36     name="李丽";
37     age=25;
38     gender='女';
39     majorField=".NET";
40 }
41 public Teacher1(int a,char g){
42     age=a;
43     gender=g;
44 }
45 public void print(){
46     System.out.println("我是"+name+",我的年纪是"+age+"岁,我的性别是"+gender+",我的专业研究ß"+majorField);
47 }
48 }
49 public class TestPeople{
50     public static void main(String args[]){
51     People p1=new People("Lili",20,'woman',55,165);
52     p1.speak();
53     String temp=p1.info();
54     System.out.println(temp);
55         }
56 }
57
58 public class Test9{
59     public static void main(String[] args) {
60         Teacher1 t1=new Teacher1();
61
62         //为属性赋值用setXXX()方法
63         t1.setName("戚薇");
64         t1.setAge(200);
65         t1.setGender('女');
66         t1.setMajorField(".Net");
67
68         //取属性的值用getXXX()方法
69         System.out.println("我的名字叫"+t1.getName());
70         t1.print();
71     }
72 }

/*

运行结果:

年龄应该在0到100之间,默认为30

我的名字叫戚薇

我是戚薇,我的年纪是30岁,我的性别是女,我的专业研究ß.Net

*/

class A{int a;int b;
}public class TestParam{public void exchange(int x,int y){System.out.println("交换前:x="+x+",y="+y);int temp=x;x=y;y=temp;System.out.println("交换后:x="+x+",y"+y);}public void exchange(A a){System.out.println("交换前:x="+x+",y="+y);int temp=a.a;          //a.a是什么意思???任意一个变量,引用数据类型的一种写法a.a=a.b;a.b=temp;System.out.println("交换后:x="+x+",y="+y);}public static void main(String[] args){A a=new A();a.a=1;a.b=2;TestParam tp=new TestParam();int x=5;int y=10;System.out.println("在main()方法中,交换前:x="+x+",y="+y);tp.exchange(x,y);System.out.println("在main()方法中,交换后:x="+x+",y="+y);System.out.println("\n\n在main()方法中,交换前a.a="+a.a+",a.b="+a.b);tp.exchange(a);System.out.println("在main()方法中,交换前:a.a="+a.a+",a.b="+a.b);}
}

  

/*

运行结果:

在main()方法中,交换前:x=5,y=10

交换前:x=5,y=10

交换后:x=10,y=5

在main()方法中,交换前:a.a=1,a.b=2

交换前:a.a=1,a.b=2

交换后:a.a=2,a.b=1

在main()方法中,交换后:a.a=2,a.b=1

*/

理解:

主要是基本数据类型和引用数据类型之间的区别;

1.exchange(int x, int y)是值传递,main方法中x、y传递给它时,交换仍然按交换处理,但main方法中的x、y,没有发生变化,只是相当于一个中间变量,自身并不发生变化。(值的拷贝)

2.exchage(A a)是引用传递,也可以理解为地址传递,传递是对象a的地址值,回到main方法中仍然处于交换状态。(方法还是不能让引用类型参数指向新的对象,即交换)

方法的可变参数

方法重载的一种特殊情况:需要定义一组方法,这组方法有相同的类型的参数但参数个数却不同

例如,需要创建一个计算一组整数和的方法

可变参数的示例:

public class VarArgs {public static void main(String[] args) {System.out.println(sum(1, 2));System.out.println(sum(1, 2, 3));}/*** 变长参数求和* <a href="http://home.cnblogs.com/u/309701/" target="_blank">@param</a> args* @return*/public static int sum(int... args) {int n = 0;for (int arg : args) {n += arg;}return n;}}

转载于:https://www.cnblogs.com/shijinglu2018/p/8277630.html

封装和参数调用(格式修改)相关推荐

  1. python 函数的调用的时候参数的传递_python定义函数时的参数调用函数时的传参...

    一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...

  2. 如何将c语言程序封装供python调用_一起学opencv-python四十五:opencv绑定python,python和c++互调...

    opencv-python系列教程来到了最后一讲.感谢一路的坚持. 如何生成OpenCV-Python绑定? 在OpenCV中,所有算法都是用C ++实现的.但是这些算法可以用于不同的语言,如Pyth ...

  3. Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]

    1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...

  4. JS原生封装时间函数 日期格式过滤

    函数封装- 日期格式过滤 function format(time) {if(!time) time = new Date();let date = new Date(time);let y = da ...

  5. 使用Java对返回的结果,封装成指定JSON格式的数据类型

    1.如果任务下来了,并且给定了你指定格式的JSON数据类型,那么就要想法封装成此种JSON格式的数据类型,方便其他成员进行调用,那么是如何进行封装的呢,这里简单研究一下子. 2.如果文档指定的封装类型 ...

  6. WPF 调用API修改窗体风格实现真正的无边框窗体

    原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...

  7. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  8. 修改数据库参数oracle,Oracle 修改数据库基本参数

    Oracle 通过ALTER SYSTEM语句修改数据库参数,其语法: ALTER SYSTEM SET = scope=[ memory | spfile | both ] [sid=] SCOPE ...

  9. Java中静态方法的调用格式

    Java中不带返回值的静态方法调用 格式:                     1.直接方法名调用 2.类名.方法名调用 代码如下: public class MethodDemo1 {publi ...

  10. c语言结构体作为形参是否加struct_(struct)结构体变量作为函数参数调用的方法小结...

    结构体变量作为函数参数传递的3种方法将一个结构体变量中的数据传递给另一个函数,有下列3种方法:用结构体变量名作参数.一般较少用这种方法.用指向结构体变量 结构体变量.结构指针变量.结构数组作为函数的参 ...

最新文章

  1. htc one m7刷Linux,HTC One M7刷机教程 HTC One M7线刷教程
  2. dataguard中MRP无法启动的问题分析和解决
  3. 五分钟带你了解Django框架设计思想!
  4. 剑指offer--重建二叉树
  5. java nio doug_深入的聊聊 Java NIO
  6. 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作
  7. IIS7 如何设置读取、脚本和可执行文件的执行权限
  8. (转)C# Enum,Int,String的互相转换 枚举转换
  9. 计算机二级题库access选择题_计算机二级access选择题题库
  10. c语言求圆柱的底面积和体积,计算圆柱的底面积和体积
  11. 工作经验分享:为什么我们要写Unti Test
  12. python扫描局域网ip_Python实现扫描局域网活动ip
  13. 类和对象10:对象访问方法
  14. frida hook svc调用
  15. 用Burg法估计AR模型的参数原理详解及matlab实现
  16. 首旅如家:夜间赏樱、采茶旅拍和登高许愿成为2021打开春天的新方式
  17. 实现《你的名字》同款滤镜,python+opencv
  18. 使用cfssl签发证书
  19. fatal: Could not set SSL backend to ‘schannel‘:already set
  20. spring注解之@PreDestroy的实现原理

热门文章

  1. 你必须具有权限才能读取此对象_为啥手机APP要获取权限?这些权限不能随便同意...
  2. FISCO BCOS Failed to connect to nodes: [ ssl hanshake failed:/192.168.64.131:20200]
  3. 基于SSM的家具商城系统
  4. java利用opencv降维_PCA主成分分析 特征降维 opencv实现
  5. Linux tty远程退出,screen 如果程序没结束就退出远程管理终端
  6. 最长单调递增子序列及思维题——动态规划
  7. cacti linux io,【cacti】Linux磁盘I/O监控
  8. 阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
  9. 190728-flink官方文档阅读和实战记录
  10. 获取URl后的查询参数