面向对象—————方法与方法的重载

带参

目录

带参方法

Java 中带参无返回值方法的使用

不可忽视的问题

Java 中带参带返回值方法的使用

Java 中方法的重载

this关键字

构造方法


方法

Java 中带参无返回值方法的使用

有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材

我们先来看一个带参数,但没有返回值的方法:

public void show(String name){
    System.out.println("欢迎"+name);
}

上面的代码定义了一个 show 方法,带有一个参数 name ,实现输出欢迎消息

调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值

对象名.方法名(实参1,实参2.....)

例如:

HelloDome h=new HelloDemo();
h.show("云小图");

运行结果为: 欢迎,云小图

很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法时的参数称为实参,是传递给方法真正被处理的值。

不可忽视的问题

  1. 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应
  2. 调用方法时,实参不需要指定数据类型
  3. 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等
  4. 当方法参数有多个时,多个参数间以逗号分隔

Java 中带参带返回值方法的使用

如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。

例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果

public String show(String name){
    System.out.println("欢迎"+name);
}

调用带参带返回值的方法:

HelloDome h=new HelloDemo();
System.out.println(h.show("云小图"));

运行结果为: 欢迎,云小图

Java 中方法的重载

如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。

如下所示 2 个方法名称都为 show ,但方法的参数有所不同,因此都属于方法的重载:

public String show(String name){
    System.out.println("欢迎"+name);
}
public String show(String name,int age){
    System.out.println("欢迎"+name);
    System.out.println("年龄"+age);
}

当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行

HelloDome h=new HelloDemo();
System.out.println(h.show("云小图"));
System.out.println(h.show("云小图",18));

运行结果为: 欢迎,云小图 年龄18

判断方法重载的依据:

  1. 必须是在同一个类中
  2. 方法名相同
  3. 方法参数的个数、顺序或类型不同
  4. 与方法的修饰符或返回值没有关系

this关键字

大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。

this关键字特点:this表示当前对象。

调用类中的属性、调用类中的方法或构造方法、表示当前对象

换言之:谁调用了方法,谁就是当前对象。

什么时候使用this关键字呢?

  1. 方法间的相互调用;
  2. this.字段;
  3. 构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。
  4. this不能用在static修饰的方法里和static修饰的代码块里;

构造方法

构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。

构造方法的定义:是在类中定义,定义格式,方法名称与类名相同,无返回值类型声明

对象实例化语法:

Demo2 de = new Demo2();  //new Demo2后面有括号,带括号表示调用了方法,此时调用的方法就是构造方法

每个类都有构造方法,如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法

在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名,一个类可以有多个构造方法

对象的产生格式:

类名称  对象名 = new  类名称();

因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。

如:Demo3 de = new Demo3();

构造方法特点:

  1. 方法名必须与类名相同
  2. 可以有 0 个、1 个或多个参数
  3. 没有任何返回值,包括 void
  4. 默认返回类型就是对象类型本身
  5. 只能与 new 运算符结合使用

值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。

这时候大家可能会产生疑问,构造方法不是没有返回值吗?为什么不能用 void 声明呢?

简单的说,这是 Java 的语法规定。实际上,类的构造方法是有返回值的,当使用 new 关键字来调用构造方法时,构造方法返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的。

注意:构造方法不能被 static、final、synchronized、abstract 和 native(类似于 abstract)修饰。构造方法用于初始化一个新对象,所以用 static 修饰没有意义。构造方法不能被子类继承,所以用 final 和 abstract 修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,所以用 synchronized 修饰没有必要。如果不了解除 static、final 之外其他的关键字.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值