2019年1月15日,面向对象-参数、构造方法、方法重载作业
java文件分享地址:
链接:https://pan.baidu.com/s/18YothzcjSwJw1vfnhOF5eg
提取码:abim
复制这段内容后打开百度网盘手机App,操作更方便哦
作业1:实现简易计算器,分别实现两个整数、三个浮点数的加法运算
编写代码如下:
此为创建的计算器类:
public class Sum {
public int sum(int a, int b){
int s = a+b;
return s;
}
public double sum(double c1, double c2, double c3){
double s = c1+c2+c3;
return s;
}
}
此为创建的计算器的测试类:
import java.util.*;
public class TestSum {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Sum sum = new Sum();
System.out.print("请输入第一个整数:");
int a = input.nextInt();
System.out.print("请输入第二个整数:");
int b = input.nextInt();
int result1 = sum.sum(a,b);
System.out.println("两个整数的和为:"+result1);
System.out.print("请输入第一个浮点数:");
double c1 = input.nextDouble();
System.out.print("请输入第二个浮点数:");
double c2 = input.nextDouble();
System.out.print("请输入第三个浮点数:");
double c3 = input.nextDouble();
double result2 =sum.sum(c1,c2,c3);
System.out.println("三个浮点数之和为:"+result2);
}
}
输出结果为:
请输入第一个整数:6
请输入第二个整数:8
两个整数的和为:14
请输入第一个浮点数:5.2
请输入第二个浮点数:6.2
请输入第三个浮点数:8.5
三个浮点数之和为:19.9
作业二:解释如下代码输出结果的原因
代码为:
此为MobilPhone的创建类
public class MobilPhone {
public String brand;
public MobilPhone(){
this.brand = "诺基亚";
}
public MobilPhone(String bra){
this.brand = bra;
}
public String buy(){
return "没发工资,买一个"+brand+"牌子的手机吧!";
}
public String buy(String reason){
return reason+",快买一个"+brand+"牌子的手机吧!";
}
}
此为MobilPhone类的测试类:
public class MobilPhoneTest {
public static void main(String[] args) {
MobilPhone mp = new MobilPhone();
mp.brand = "苹果"; //发工资了,修改品牌属性
String detail = mp.buy("发工资啦"); //发工资了,调用带参数的构造方法;
System.out.println(detail);
}
}
输出结果为:
发工资啦,快买一个苹果牌子的手机吧!
上题输出结果的原因为:
MobilPhone mp = new MobilPhone();此行代码创建新的MobilPhone对象为mp,虽然调用了无参构造方法,将brand属性赋值为诺基亚,
但是mp.brand = "苹果";此行代码又重新将对象的brand属性赋值为“苹果”;
String detail = mp.buy("发工资啦"); 此行代码是调用了普通有参buy的方法,参数为"发工资啦",并通过detail接收了该有参方法的返回值,
所以最后输出的结果为“发工资啦,快买一个苹果牌子的手机吧!”
课堂笔记:
方法调用处,参数叫做实际参数,也叫实参;
实参名字可以随便取,遵循驼峰命名规则,并要求有意义;
实参和形参类型必须一致,名字可以一致,也可以不一致;
方法有没有返回值,和有没有参数,没有任何关系;
方法参数可以是一个,也可以是多个,多个参数之间用逗号隔开(在形参和实参都是这样);
形参和实参数量一定要一致,数据类型一定要一致;
传的参数顺序要与定义的方法参数顺序一致;
方法传参
基本数据类型和引用数据类型在传参时区别;
1、当参数传递为基本数据类型时,参数变化不保留; 基本数据类型参数传值
2、当参数传递为引用数据类型时,参数变化会保留;引用数据类型参数传址
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组、接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个应用
对象数组作参数
无论数组的变量类型为int、char、double、boolean均为引用数据类型;包括自定义数剧类型数组;
构造方法
1、该方法缺少返回值;例:public Student(){}
2、该方法名字必须和类名一样
构造方法的作用是创建对象!
构造方法重载
构造方法重载:在同一个类中
1、方法名相同
2、参数项不同 //包括:参数个数不同,参数类型不同
3、与返回值类型、访问修饰符无关
此时系统不再提供默认无参构造方法
public Student(){} //无参构造方法
public Student(String name,int age){} //有参构造方法
以上两个方法同名,但是一个无参,一个有参,可以同时出现在一个类里;
每个类都有一个默认无参构造方法,但是手工添加了带参构造方法,那么系统默认的无参构造方法就被覆盖掉了,你想使用,必须显示的写出来
成员变量和局部变量:
成员变量作用域:在整个类的内部;
局部变量作用域:在定义它的方法中;
成员变量的初始值:系统会给默认初始值
局部变量的初始值:需要我们自己给赋值;
在同一个方法中,不能有同名的局部变量
在同一个类中,成员变量可以和局部变量名相同,但是局部变量优先级更高