Java重写与重载
一、重载
重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
示例代码:
public void say(String text) {
System.out.println(this.age + "岁的" + this.name +"说:\"" + text + "\"" );
}
public void say(String text,String state) {
System.out.println(this.age +"岁的"+this.name+state+"的说:\""+text+"\"");
}
public String say(String text,String state,String location){
return this.age +"岁的"+this.name+"在"+location+""+state+"的说:\""+text+"\"";
}
二、重写
1、重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。
2、重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能根据需要实现父类的方法。
3、重写方法不能抛出新的检查异常或者比被重写方法申明更广泛的异常。
示例代码:
/**
* Bird 鸟
*
* @author 我是灰太狼
*
*/
class Bird {
//
int weight = 0;
// private 成员变量
private int intPrivate = 0;
// --方法
public void fly() {
System.out.println("我是鸟,我可以飞!");
}
public void eatting() {
System.out.println("....吃.....");
}
// private 方法
private void methodPrivate() {
System.out.println("....test.....");
}
}
/**
* Ostrch 鸵鸟
* @author 我是灰太狼
*
*/
class Ostrch extends Bird{
int weigth=10;
//重写父类的方法 (override)
public void fly(){
System.out.println("我是鸵鸟,虽然我是鸟但我不能飞!");
}
//super this 关键字
public void superThisDemo(){
//this调用自身的方法或成员变量
System.out.println(this.weight);
this.fly();
//super,子类中调用父类的方法或成员变量
System.out.println(super.weight);
super.fly();
}
}
三、重写与重载之间的区别
1、重载方法的参数列表必须修改,重写方法的参数列表一定不能修改。
2、重载方法的返回类型可以修改,重写方法得返回类型一定不能修改。
3、重载方法的异常可以修改,重写方法的异常可以减少或删除,一定不能抛出新的或者更广的异常。
4、重载方法的访问可以修改,重写方法的访问一定不能做更严格的限制(可以降低限制)。
5、方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型不同和次序不同,则称为方法的重载。
6、方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写。
7、方法的重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。