1、重载
重载是指方法的名称相同,但是参数不同。java中最典型的重载例子就是类的构造器的重载。
怎样区分重载方法?每个重载的方法都必须有一个独一无二的参数列表。甚至参数的顺序不同也可以区分两个方法。不能以返回值来区分重载方法。因为有的方法根本不需要返回值。
public class OverLoadTest {
private int i;
private String str;
public OverLoadTest() {
}
//构造器的重载
public OverLoadTest(int i, String str) {
this.i = i;
this.str = str;
}
/**
* @param args
*/
public static void main(String[] args) {
OverLoadTest olt = new OverLoadTest();
olt.method();
olt.method(10);//重载的带参数的方法
System.out.println("==============分割线==========");
OverLoadTest olt1 = new OverLoadTest(20,"dog");
olt1.method();
olt1.method(10);//重载的带参数的方法
}
public void method() {
System.out.println("-----method");
}
//重载的方法
public void method(int a) {
System.out.println("-----method--i=" + i + ";str=" +str);
}
}
2、重写(Overriding)
继承是所有OOP语言和Java语言不可缺少的组成部分。创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。在进行继承时,子类会获取到基类中的所有非private方法。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
若子类中的方法与父类中的某一方法具有相同的
方法名、
返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。子类方法的访问修饰权限不能少于父类的。可以通过@Override这个注解来告诉虚拟机这个方法是重写而不是重载。子类还可以接着重载从父类继承的方法。
public class OverrideTest {
/**
* @param args
*/
public static void main(String[] args) {
Son s = new Son();
s.method();
s.method("方法重写");
}
public void method() {
System.out.println("-----father");
}
}
class Son extends OverrideTest {
@Override//通过这个注解来告诉虚拟机这个方法是重写而不是重载
public void method() {
super.method();//用super调用父类的方法。
System.out.println("-----son");
}
//重写
public void method(String str) {
System.out.println("-----" + str);
}
}
参考文章:
http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html