方法重载和方法重写

方法重载

如果一个类中有多个具有相同名称但参数不同的方法,则称为方法重载。但返回值不同不是方法重载

重载的不同方法

通过改变参数的数量

add(int num1,int num2){}
add(int num1,int num2,int num3){}
add(int... args){}//多个参数相加

通过改变参数类型

class Add{
	int add(int num1,int num2){
		return num1 + num2;
	}

	double add(double num1,double num2){
		return num1 + num2;
	}
}

两个参数add参数类型不同,可以称为重载

add(int num1,int num2){}
add( num1,double num2){}

重载与返回类型无关

class Add(){
	static int add(int num1,int num2){
		return num1 + num2;
	}
	static double add(int num1,int num2){
		return num1 + num2;
	}

	public static void main(String args){
		add(1,2);
	}
}

以上函数当点用add的时候,该找哪个函数呢?是int add(){} 还是double add(){}?所以根据返回数据类型来重载,是很容易造成混淆,因为不知道调用哪个返回类型的add方法。

方法重写

重写:子类父类出现了一模一样的方法(注意:返回值类型可以是子类父类)
应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。

注意事项:
【1】父类中私有方法不能被重写,因为父类私有方法子类根本就无法继承

【2】子类重写父类方法时,访问权限不能更低,最好就一致

【3】父类静态方法,子类也必须通过静态方法进行重写
其实这个算不上方法重写,但是现象确实如此

【4】子类重写父类方法的时候,最好声明一模一样。


class Phone{
	public void call(String name){
		System.out.println("给"+name+"打电话");
	}
}

class NewPhone extends Phone{
	public void call(String name){
		//System.out.println("给"+name+"打电话");
		super.call(name);//通过super关键字调用父类的功能
		System.out.println("可以听天气预报");
	}
}
class ExtendsDemo{
	public static void main(String[] args){
		NewPhone np = new NewPhone();
		np.call("123");
	}
}
//输出123打电话
可以听天气预报
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值