4、Java方法

4.1、声明方法的原因

1) DRY原则,把能被复用的逻辑抽取出来

DRY原则:Don’t repeat yourself 不写重复代码

DRY利用的方法是抽象,把共同事物抽取出来,进行封装

2) 实现相对独立的逻辑

3) 实现比较复杂的逻辑

4) 可以对具体实现进行隐藏/封装

4.2、(普通)方法的声明—制定行动计划

Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段

声明格式:

[修饰符 1 修饰符2...]返回值类型 方法名([形式参数列表]){

程序代码;
[return 返回值;]
}

形式参数(形参):在方法声明时接收的参数类型,数量,顺序。

扫描二维码关注公众号,回复: 3716300 查看本文章

实际参数(实参):调用方法时实际传给方法的数据

返回值类型:方法要返回的结果的数据类型。

若一个方法没有返回值,必须给出返回值类型void

返回值:方法在执行完毕后返还给调用者的数据

return语句终止方法的运行并指定要返回的数据

4.3、(普通)方法的调用—-实施计划行动

Java语言中使用下述形式调用方法:

对象名.方法名(实参列表); ///非静态方法的调用方式

静态方法名(实参列表); //静态方法的调用方式

帮助给对象的各个属性进行赋值

实参数目、数据类型和次序必须和所调用方法声明的形态列表匹配(int,double,float)

4.4、方法的重载overload—–(实现相似功能)

在同一个类中可以定义多个同名方法—-方法的重载

重载方法的参数列表必须不同

重载方法的返回值类型,权限,其他修饰符可以相同,也可以不同

4.5、方法重写(overriding method)

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

在子类和父类中,重写方法后,在调用时,以创建的对象类型为准,会调用谁的方法。

4.5.1、重写的特性

1) 发生在子父类中,方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)

2) 子类抛出的异常不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)

3) 子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

4) 父类中的方法若使用private、static、final任意修饰符修饰,那么,不能被子类重写。

重载与重写的区别:https://blog.csdn.net/qq_28797347/article/details/79766196

4.6、递归

递归的基本思想和要素:

递归的基本思想是”以此类推”

递归方法解决问题的两个步骤:

求得范围缩小的同性质问题的结果

利用这个已得到的结果和几个简单的操作求得问题最后解答,当同性质的问题被简化得到足够简单时,将可直接获得问题的答案,而不必在调用自身

例如:

求给定整数的阶乘,例如5!=54321

1)使用循环语句

2)使用递归

public int method(int n){
if(n==1)
return 1;
else
return n*method(n-1);
}

4.7、获取随机数方法

Random r = new Random(); //用于产生随机数的类

int i = r.nextInt(6)+1; //产生[1,6]的随机数

Math.Random()*10+1; //产生[1,10]的随机数

4.8、构造方法(也叫构造器/构造函数)

构造方法的名字和类名相同,不声明返回值类型(例如:void int)也不要在方法中返回任何数据。

4.8.1、构造方法分类

显式构造方法:

默认(隐式)构造方法:默认无参的构造方法

4.8.2、构造方法的作用

帮助创建对象(将类中的属性和方法加载到new开辟出的堆空间中)

帮助给对象的各个属性进行赋值

(1)构造方法名称与类名相同,没有返回值声明(包括 void)

(2)构造方法用于初始化数据(属性)

(3)每一个类中都会有一个默认的无参的构造方法

(4)如果类中有显示的构造方法,那么默认构造方法将无效

(5)如果有显示的构造方法,还想保留默认构造 方法,需要显示的写出来。

(6)构造方法可以有多个,但参数不一样,称为构造方法的重载

(7)在构造方法中调用另一个构造方法,使用this(…),该句代码必须在第一句。

(8)构造方法之间的调用,必须要有出口。

(9)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留。

(10)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象)

(11)private Dog(){},构造方法私有化,当我们的需求是为了 保正该类只有一个对象时。

什么时候一个类只需要一个对象?比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。权衡只用一个对象与产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象

猜你喜欢

转载自blog.csdn.net/qq_28797347/article/details/79766070
今日推荐