java基础
**
方法重写与重载
**
上一篇博客中介绍了面向对象之继承,此篇博客则简单来看看这个方法的重写与重载。这里先不急说那个多态,重写和重载问题看完后再看多态。

重写与重载,这是Java面向对象语言特别鲜明的特点,使用这个增加了代码的复用性,赶快来看看这玩意。

重写:Overriding
位置:父子类
特点:方法名、参数相同。方法位置不同,实现方式不同
上代码,我们具体看看重写是什么样:
public class Parents {
public void talk()
{
System.out.println("Parents is talking");
}
}
public class Son extends Parents {
@Override
public void talk() {
System.out.println("Son is talking");
}
}
注意:
1、重写方法位于子类,父类有同样的方法,方法实现(内部)不同。
2、方法名,返回值类型必须相同(相比父类方法)。
3、参数列表必须相同。
4、访问权限不能比父类更低。
5、父类声明为private和final(之后详见)的方法不能重写。
6、父类构造方法不能重写。
来,我们分别调用一下这俩方法
public class test{
public static void main(String[] args) {
Parents parents = new Parents();
parents.talk();
Parents parents1 = new Son();
parents1.talk();
Son son = new Son();
son.talk();
// Son son1 = (Son) new Parents(); 不能实例化子类对象
// son1.talk();
}
}
结果

用子类实例化父类对象后,父类的方法被子类重写,调用时用的则是子类重写后的方法。
差不多就这样了,先看看重载吧!!!
重载:Overloading
位置:同一个类
特点:方法名相同,参数列表不同(参数个数或参数类型不同),实现方式不同。
上代码,我们具体看看重载是什么样:
public class Parents {
public void talk()
{
System.out.println("Parents is talking");
}
public void talk(String str)
{
System.out.println("Parents talk:"+str);
}
}
注意:
1、重载方法写于同一个类,方法实现不同。
2、方法名必须相同,返回值任意。
3、参数列表必须不同(类型或个数)。
4、构造方法可重载。
来,我们分别调用一下这俩方法
public class test{
public static void main(String[] args) {
Parents parents = new Parents();
parents.talk();
parents.talk("hello");
}
}
结果

最后:
Java的重写与重载使得Java代码拥有多个参数不同的同名方法,使得程序更具有可读性,使用起来更加方便。
同样也是Java多态性的一种表现(根据参数列表决定用那个方法)。

上一篇 》
面向对象——继承
下一篇 》
接口抽象类