重载overload 和 覆盖override 是多态的两种表现形式。
重载overload,发生在同一类中,相当于不同的方法,只是因为功能类似所以起了相同的名字,必须包含不同的参数,可以使用不同的返回值类型。如代码:
1 public class OverloadTest { 2 3 public void loadTest(){ 4 System.out.println("loadTest第一个"); 5 } 6 7 public void loadTest(String p_string){ 8 System.out.println("loadTest第二个"); 9 } 10 11 public int loadTest(int p_time){ 12 System.out.println("loadTest第三个"); 13 return p_time + 100; 14 } 15 16 public String loadTest(int p_time, String p_str){ 17 System.out.println("loadTest第四个"); 18 return p_str; 19 } 20 21 }
覆盖override,发生在子类中
先要创建一个父类 OverrideTest
1 public class OverrideTest { 2 3 public void test1(){ 4 System.out.println("基类的方法"); 5 } 6 7 }
再创建一个子类去继承父类,可以对父类中的方法进行覆盖,顺便把main函数也写一起了。
1 public class OverrideExtends extends OverrideTest { 2 3 @Override 4 public void test1() { 5 // TODO Auto-generated method stub 6 // super.test1(); 7 System.out.println("子类继承之后覆盖后的方法"); 8 } 9 10 public static void main(String[] args){ 11 12 OverrideTest ot = new OverrideExtends(); 13 ot.test1(); 14 15 } 16 17 }
这样的话,运行了之后,结果为“子类继承之后覆盖后的方法”,即子类中通过覆盖的方式将父类中的Test1方法进行了重写,使用的时候,就直接执行了子类中的方法。
注意:
1. 重写的时候,方法名称必须相同。
2. 重写的时候,参数必须相同。
3. 重写的时候,返回值必须相同。(或者都没有)