封装和参数调用(格式修改)
封装:把一类事物的特性抽象出来,比如方法和属性,并用代码包装起来,以结果为导向,忽略具体实现过程,即为封装。
思路:
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
封装和参数调用(格式修改)相关推荐
- python 函数的调用的时候参数的传递_python定义函数时的参数调用函数时的传参...
一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...
- 如何将c语言程序封装供python调用_一起学opencv-python四十五:opencv绑定python,python和c++互调...
opencv-python系列教程来到了最后一讲.感谢一路的坚持. 如何生成OpenCV-Python绑定? 在OpenCV中,所有算法都是用C ++实现的.但是这些算法可以用于不同的语言,如Pyth ...
- Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]
1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...
- JS原生封装时间函数 日期格式过滤
函数封装- 日期格式过滤 function format(time) {if(!time) time = new Date();let date = new Date(time);let y = da ...
- 使用Java对返回的结果,封装成指定JSON格式的数据类型
1.如果任务下来了,并且给定了你指定格式的JSON数据类型,那么就要想法封装成此种JSON格式的数据类型,方便其他成员进行调用,那么是如何进行封装的呢,这里简单研究一下子. 2.如果文档指定的封装类型 ...
- WPF 调用API修改窗体风格实现真正的无边框窗体
原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...
- 十一、Struts2封装请求参数的方式
十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...
- 修改数据库参数oracle,Oracle 修改数据库基本参数
Oracle 通过ALTER SYSTEM语句修改数据库参数,其语法: ALTER SYSTEM SET = scope=[ memory | spfile | both ] [sid=] SCOPE ...
- Java中静态方法的调用格式
Java中不带返回值的静态方法调用 格式: 1.直接方法名调用 2.类名.方法名调用 代码如下: public class MethodDemo1 {publi ...
- c语言结构体作为形参是否加struct_(struct)结构体变量作为函数参数调用的方法小结...
结构体变量作为函数参数传递的3种方法将一个结构体变量中的数据传递给另一个函数,有下列3种方法:用结构体变量名作参数.一般较少用这种方法.用指向结构体变量 结构体变量.结构指针变量.结构数组作为函数的参 ...
最新文章
- htc one m7刷Linux,HTC One M7刷机教程 HTC One M7线刷教程
- dataguard中MRP无法启动的问题分析和解决
- 五分钟带你了解Django框架设计思想!
- 剑指offer--重建二叉树
- java nio doug_深入的聊聊 Java NIO
- 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作
- IIS7 如何设置读取、脚本和可执行文件的执行权限
- (转)C# Enum,Int,String的互相转换 枚举转换
- 计算机二级题库access选择题_计算机二级access选择题题库
- c语言求圆柱的底面积和体积,计算圆柱的底面积和体积
- 工作经验分享:为什么我们要写Unti Test
- python扫描局域网ip_Python实现扫描局域网活动ip
- 类和对象10:对象访问方法
- frida hook svc调用
- 用Burg法估计AR模型的参数原理详解及matlab实现
- 首旅如家:夜间赏樱、采茶旅拍和登高许愿成为2021打开春天的新方式
- 实现《你的名字》同款滤镜,python+opencv
- 使用cfssl签发证书
- fatal: Could not set SSL backend to ‘schannel‘:already set
- spring注解之@PreDestroy的实现原理
热门文章
- 你必须具有权限才能读取此对象_为啥手机APP要获取权限?这些权限不能随便同意...
- FISCO BCOS Failed to connect to nodes: [ ssl hanshake failed:/192.168.64.131:20200]
- 基于SSM的家具商城系统
- java利用opencv降维_PCA主成分分析 特征降维 opencv实现
- Linux tty远程退出,screen 如果程序没结束就退出远程管理终端
- 最长单调递增子序列及思维题——动态规划
- cacti linux io,【cacti】Linux磁盘I/O监控
- 阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
- 190728-flink官方文档阅读和实战记录
- 获取URl后的查询参数