多態的形式:
- 靜態多態--->>>方法的重載
- 動態多態--->>>方法的重寫
- 動態綁定--->>>子類對象指向父類引用
重載(oveloading)
--->>>方法名相同,形式參數的個數,數據類型,順序一個任何一個就可以構成重載,返回值和訪問修飾符與重載無關
package pratice;
/**
* 測試重載相關信息
* @author Administrator
*
*/
public class Methed {
// 定義靜態變量
public static int i = 5;
public int j = 7;
public void add() {
return;
}
/**
* 方法的重載參數不同
*
* @param age
* @param name
*/
public void add(int age, String name) {
System.out.println("姓名:" + name + "年齡:" + age);
}
/**
* 方法的重載,參數類型不同,
* @param a
* @param b
*/
public void add(int a, int b) {
System.out.println(a + b);
return;
}
/*訪問修飾符的改變不會形成重載*/
protected void add(int a, int b) {//報錯
System.out.println(a + b);
return;
}
/*返回值不會形成重載*/
public int add(int a, int b) {//報錯
System.out.println(a + b);
return 1;
}
/**
* 方法的重載,使用可變長參數
* @param args
*/
public void add(int... args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
方法的重寫(override)
package InheritTest;
/*
* @version 父類
*/
public class Person {
protected String name;
protected int age;
//無參構造器
public Person(){}
public void showClass(){
System.out.println("姓名:" + name + "\t"+ "年齡:" + age + "\n");
}
}
package InheritTest;
/**
* 繼承父類,重寫方法
* @author Administrator
*
*/
public class Student extends Person {
private String sex;
@Override /*重寫標誌*/
public void showClass() {
System.out.println("姓名:" + name + "\t " + "年齡:" + age + "\t " + "性別:" + sex + "\n");
}
}
動態綁定:
package InheritTest;
/**
* 子類對象指向父類引用,調用重寫方法調用的是子類的方法,不能掉用子類特有的方法
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
Person test = new Student();
test.showClass();
}
}