150天打卡day11_方法的重载和构造方法
方法的重载
方法的签名包括两部分:方法名和参数列表
是来自于英文单词signature,外国人认为每个签名都必须是唯一的,不可以有相同的两个签名。
那么程序在运行的时候,也是要求在一个类里面不可以有方法签名完全一样的两个方法.
如果这么写编译器立马就会报编译错误,但是如果方法名相同,参数列表不同的话是可以的
有的同学会有这样的误区,写成这样
这样也是会报编译错误的a,b这两个变量名编译器认为他就仅仅是两个名字而已,不做任何判断,还是会认为这两个方法的参数列表是一样的。
但是如果写成这样就是可以的,所以呢,参数列表不同只和参数的类型,个数,还有顺序有关.
在一个类里面如果有两个方法他们的方法名相同,参数列表不同,就可以把这称之为是方法的重载。为什么会用到方法的重载呢?
来看这样一个例子,模拟一下现实生活中的收银系统
假设收款窗口的的设计可以采用两种方式:
A:开设三个窗口,分别用来收取现金,微信支付和支付宝支付,三种支付渠道,用户在付款的时候根据需求选择不同的窗口。
B:只开设一个窗口,但是支持现金支付,微信支付,和支付宝支付三种支付方式
常规情况下都会认为是B的设计会更加合理。
可以降低用户的负担,用户去付款的时候不需要再去找相应的窗口,只需要到收款窗口,如果你是
微信,就出示微信的二维码,如果你是支付宝就拿出支付宝的二维码就可以了。

有了方法的重载,对于同一件事情,如果有不同的解决方法就不用在一个类里面去定义不同的多
个方法了,大大的减少了代码的冗余。那么在主方法中去调用的时候,编译器会自动根据传入的
参数来调用合适的方法。重载方法的调用与之前学习的方法调用相同
构造方法
构造方法是在创建对象的时候为其开辟内存空间,并且用来初始化成员变量的时候调用的一个特殊的方法
没有返回值
方法名必须和类名一致
任何一个类都有他的构造方法,如果不写,编译器在运行的时候会自动添加一个空的无参构造方法,称之为是默认的构造方法。但是如果自己定义想要初始化那个成员变量就需要自己去定义构造方法,如果自己定义了带参的构造方法,那么原有的空的无参构造就会失效。
在创建对象的时候,构造函数跟在new关键字的后面意思就是在实例化了一个对象,而构造方法对这个对象进行了初始化,里面的参数类型和个数都必须和构造方法里面定义的保持一致。
构造方法的作用
成员变量
this 关键字
成员变量和自己定义的参数重名了
public class Student{ String name; int age; public Student(String name, int age){ name = name; age = age; } }
在类中的方法是既可以使用自己定义的参数,也可以使用成员变量,当成员变量和自己定义的参数发生重名时,就需要用到一个this关键字来进行区分哪个是成员变量,哪个是自己定义的参数。
this关键字用在方法体中,用于指向调用该方法的当前对象,简单的来说,就是那个对象调用方法,this就指向哪个对象,
在方法中通过this关键字来指明当前对象,用运算符"."来表示对象的属性,可以理解为“对象的”
但是如果没有歧义的话,我们可以省略this
构造方法的重载
方法可以重载,同样构造方法也是可以重载的,为了方便使用,可以定义多个构造方法,这些构造方
法都有相同的类名,只是参数列表不同.
称之为是构造方法的重载,在调用的时候同样也是根据传入的参数编译器会自动判断调用的是
哪个构造方法
欢迎👏点赞+关注,笔芯❤️
