之前在上一篇学习了面向对象中类和对象的介绍和使用,今天主要针对面向对象中的构造方法进行讲解,主要是通过案例的方式将之前学的和今天要学的进行一下综合,在讲解案例之前需要先初步的了解下构造方法的定义以及怎么创建。
补充一个小知识
:
文章目录
一、构造方法的介绍
将与类名同名
的方法叫做构造方法,构造方法没有返回值
二、构造方法的注意事项
1、构造方法的创建
①、如果没有定义构造方法,系统会给出一个默认的无参数的构造方法
②、如果定义了构造方法,系统将不再提供默认的构造方法
2、构造方法的重载
如果自定义了带参数的构造方法,还要使用手动创建
无参的构造方法
2.1、重载的条件
①、方法名相同 ②、参数列表不同
3、推荐使用的方式
无论是否使用,都手动书写
无参构造方法和带参构造方法
三、构造方法的语法
public class Constroct{
// 构造方法 函数名与类名一致
public Constroct{
// 构造方法
}
}
四、案例讲解
1、题目
假设数据仓库库存有如下数据{“苹果”,“橘子”,“芒果”,“哈密瓜".“柚子”,“牛油果”,“车厘子",“鹰嘴桃”,“阳光提"},请设计一个类用于对数据操作。如:查询数据中是否有西梅
2、题目分析
根据题目分析:可以提取出一个有关水果的类,
类中属性
可以有:颜色color、名字name、价格price等。
类中行为
可以有:判断用户输入的水果在仓库中是否存在 findIsFruit
3、代码分析
水果类Fruit
代码 :
①、需要定义一个数组 f[ ]
存放仓库中已有的水果
②、通过循环 for
依次取出数组中的水果
③、取出后做判断 if
,如果跟用户输入的一致 .equals()
则表示仓库中有这个水果,不一致则表示仓库中没有这种水果,最后不管有没有水果都需要返回结果给用户。
④、该类中需要使用带参的构造函数Fruit
,由于构造方法的要求,创建带参的构造方法后还需要再写一个函数名也为Fruit的构造方法,不同的是第二次写的构造方法没有参数
⑤、带参构造方法中的参数与水果类中的属性一致,将得到的用户输入的属性赋值给该水果类的成员变量(全局变量)
⑥、代码展示
public class Fruit {
String name;
double price;
String color;
String f[] = {"苹果", "橘子", "芒果", "哈密瓜", "柚子", "牛油果"};
// 判断是否有水果
public boolean findIsFruit(String name) {
// 定义一个flag用来接收最后的结果,如果仓库中有则为true,如果没有则为false
boolean flag = true;
for (int i = 0; i < f.length; i++) {
if (f[i].equals(name)){
System.out.println("仓库里有"+name);
break; // 这里需要使用break关键字,不然循环会输出很多次
}else{
System.out.println("仓库中没有"+name);
flag = false;
break;
}
}
return flag;
}
//todo 构造函数
public Fruit() {
}
public Fruit(String name, String color, double price) {
this.name = name;
this.color = color;
this.price = price;
}
}
用户输入类test1
代码:
①、在main方法中编写全部代码
②、创建一个Fruit类对应的对象
③、创建一个变量接收水果类方法返回来的结果(Boolean类型)
④、打印结果
⑤、代码展示
public class test1 {
// TODO 假设数据库存有如下数据{“苹果”,“橘子”,“芒果”,“哈密瓜”,“柚子”,“牛油”,
// “车厘子”,“鹰嘴桃”,“阳光提”},请设计一个类用于对数据操作。如:查询数据中是否有西梅
public static void main(String[] args) {
Fruit fruit = new Fruit("苹果","red",38);
// 调用Fruit类中查询仓库中是否有该水果的方法,需要传入参数
boolean result = fruit.findIsFruit("葡萄");
System.out.println(result);
}
}