Java方法重载、this关键字用法

上一篇文章:Java中的数学函数、实例成员与类成员



Java中的两种多态重载(Overload)重写(Override),重写是与继承 *有关的多态。

方法重载

方法重载 通俗讲就是在类体中定义了一些方法名相同的方法。虽然方法名相同,但是每个方法的参数个数或参数类型不同,以此来区分不同的方法,防止歧义。

class Compute {    //Compute类
	static int aplusb(int x, int y){     //定义一个类方法
		return x + y;
	}
	static double aplusb(double x, int y){
		return x + y;
	}
	static float aplusb(float x, int y){
		return x + y;
	}
}
public class Example {
	public static void main(String args[]){
		System.out.println(Compute.aplusb(3, 3));    //类方法可以通过类名直接调用
		System.out.println(Compute.aplusb(3.0, 3));
		System.out.println(Compute.aplusb(3.0F, 3));
	}
}

在这里插入图片描述

class Compute {
	float aplusb(int a, int b){     //实例方法
		return a + b;
	}
	static double aplusb(double a, int b){     //类方法
		return a + b;
	}
}
class Example {
	public static void main(String args[]){
		System.out.println(Compute.aplusb(3.0, 3));   //类方法通过类名直接调用
		//实例方法使用前必须先创建一个该类的对象
		Compute com = new Compute();    //创建一个名为com的Compute类对象
		System.out.println(com.aplusb(3, 3));
		System.out.println(com.aplusb(3.0, 3));    //创建的对象既可以调用实例方法,也可以调用类方法
	}
}

在这里插入图片描述

this关键字

用在实例方法中调用成员变量

在实例方法中使用成员变量 this.成员变量名

class A {
	int num = 666;
	void outPut(){
		System.out.println("成员变量num: "+this.num);
	}
}
public class Example {
	public static void main(String args[]){
		A a = new A();
		a.outPut();
	}
}

一般情况下,没有局部变量与成员变量重名,this都是省略的:

class A {
	int num = 666;
	void outPut(){
		System.out.println("成员变量num: "+num);
	}
}
public class Example {
	public static void main(String args[]){
		A a = new A();
		a.outPut();
	}
}

方法体内部的局部变量与成员变量重名时

//使用this关键字之前
class A {
	int num = 666;    //成员变量
	void outPut(){     //定义了一个无返回值的方法
		int num = 777;       //局部变量num与成员变量num重名了
		System.out.println("此时输出的num是局部变量num"+num);
	}
}
public class Example {
	public static void main(String args[]){
		A a = new A();  //创建一个A类的对象a
		a.outPut();   //调用方法
	}
}

在这里插入图片描述

//使用this关键字之后
class A {
	int num = 666;    //成员变量
	void outPut(){     //定义了一个无返回值的方法
		int num = 777;       //局部变量num与成员变量num重名了
		System.out.println("此时输出的num是成员变量num"+this.num);
	}
}
public class Example {
	public static void main(String args[]){
		A a = new A();  //创建一个A类的对象a
		a.outPut();   //调用方法
	}
}

在这里插入图片描述

用在构造方法中调用本类体中的方法

class Example {
	Example(){
		this.outPut();    //在构造方法中调用本类体当中的方法
	}
	void outPut(){
		System.out.println("java编程真有趣");
	}
	public static void main(String args[]){
		Example a = new Example();
	}
}

在这里插入图片描述
为了简化,在这种情况下,this关键字也可以省去:

//在这种情况下,this关键字也可以省去
class Example {
	Example(){
		outPut();    //在构造方法中调用本类体当中的方法,省去this关键字
	}
	void outPut(){
		System.out.println("java编程真有趣");
	}
	public static void main(String args[]){
		Example a = new Example();
	}
}

在这里插入图片描述

用在构造方法中调用本类体中其他的构造方法

class Example {
	int a;
	int b;
	double c;
	Example(int x, int y){
		a = x;
		b = y;
	}
	Example(int x, int y, double z){
		this(x, y);       //调用了上面的那个构造方法
		c = z;
	}
	public static void main(String args[]){
		Example a = new Example(666, 999, 1.314);
		System.out.println(a.a);
		System.out.println(a.b);
		System.out.println(a.c);
	}
}

在这里插入图片描述
这种写法是为了简化写法,等效于:

class Example {
	int a;
	int b;
	double c;
	Example(int x, int y){
		a = x;
		b = y;
	}
	Example(int x, int y, double z){
		a = x;
		b = y;
		c = z;
	}
	public static void main(String args[]){
		Example a = new Example(666, 999, 1.314);
		System.out.println(a.a);
		System.out.println(a.b);
		System.out.println(a.c);
	}
}

下一篇文章

Java中的包、import语句、访问权限

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackey_Song_Odd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值