持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
引入面向对象(了解)
需求一:在一个类中定义功能对数组求和
分析和步骤:
分析求数组中所有数据的和
1)定义一个数组
2)定义一个变量接收所有数据的和
3)使用循环对数组的角标进行遍历
4)根据数组的名字和角标取出数组中的每一个数据和定义的变量进行相加,
然后重新赋值给定义的变量
5)将求和的功能封装到一个函数中,并将数据的返回给调用者
class Demo1
{
public static void main(String[] args)
{
//定义一个数组
int[] arr={2,4,1,8};
//调用自定义函数,求数组的所有数据的和
int sum=getSum(arr);
//将所求的结果打印到屏幕上
System.out.println("sum="+sum);
}
/*
为了解决代码的复用性
所以将求和的功能封装到函数中
*/
public static int getSum(int[] arr)
{
//定义一个变量接收所有数据的和
int sum=0;
//使用循环对数组的角标进行遍历
for (int i=0;i<arr.length;i++ )//i表示角标
{
/*根据数组的名字和角标取出数组中的每
一个数据和定义的变量进行相加*/
sum=sum+arr[i];
}
//将计算的和返回给调用者
return sum;
}
}
需求二:在另一个类中定义功能对数组求和 。
分析:由于也是求数组中所有数据的和,只不过不是在上面的类Demo1中,而是在另一个类Demo2中实现同样的功能。注意:在开发中是有很多这样的需求的。按照我们所学的知识我们可以在这个类Demo2中写和Demo1类中相同的代码,功能可以实现。
总结:虽然上述方法能够实现效果,但是代码的复用性不是很好,当我们有多个程序中都需要对数组进行上述操作的时候,那么就会导致在这些程序都需要书写上述的函数。纵观所有的程序而言,会发现对数组进行求和值的函数在所有的程序中重复。
解决上述代码出现的问题,我们可以按照定义函数时的思想来写代码,即可以将相同的代码功能抽离出来,然后存放到某个类中,我们称为这个类为工具类。如果想用工具类中的功能时,我们只是在需要的类中调用下即可。
注意:这里在其他类中调用工具类中的方法时的思想就是面向对象思想。
工具类ArrayTools 中的代码:
/*
将在类中定义功能对数组求和。
这个类可以称为工具类
*/
class ArrayTools
{
public int getSum(int[] arr)
{
int sum=0;
for (int i=0;i<arr.length;i++ )//i表示角标
{
sum=sum+arr[i];
}
return sum;
}
}
在类Demo3中调用工具类ArrayTools中的方法的代码:
/*
需求:求数组中所有数据的和
*/
class Demo3
{
public static void main(String[] args)
{
//定义一个数组
int[] arr={2,4,1,8};
/*
调用工具类中的求和方法
1.在Demo3类中引入工具类
*/
//找到可以帮我们完成功能的程序
//然后通过new关键字创建出这个程序的对象
ArrayTools tools=new ArrayTools();
//通过该程序的对象tools就可以调用工具类ArrayTools中的方法了
int sum=tools.getSum(arr);//调用工具类ArrayTools中的函数,求数组的所有数据的和
//将所求的结果打印到屏幕上
System.out.println("sum="+sum);
}
}
面向对象:
当我们在程序如果需要使用某些功能的时候,这时先不要自己盲目的去想这个功能的代码自己应该使用什么语句,以及其他什么逻辑结构,而是先思考有没有已经写好的功能存在,而直接去找那些存在的功能,然后在自己的程序通过new关键字,创建出具备指定功能的程序对象, 然后直接调用具体自己需要的功能,传递参数进去,最后得到自己想要的结果。
面向对象的举例引入:
我们先定义了Demo1 和 Demo2两个程序,但是在这个两个程序都书写了相同的getSum方法,于是我们把相同的函数进行了抽取。保存到的第三个程序ArrayTools程序中。
如下图所示:
说明:把多个类中相同的功能代码进行抽取,然后保存在统一类中,当前的程序需要这些功能的时候,在其他的程序引用当前这个类中的功能即可。
总结:在Demo1和 Demo2 这两个程序中直接使用new 关键字 创建 ArrayTools的实例(对象),然后通过对象直接可以调用到ArrayTools中的getSum方法。这样可以方便的保证我们在任何程序中都可以引入其他程序中已经存在的功能。