多态的形式:
- 静态多态--->>>方法的重载
- 动态多态--->>>方法的重写
- 动态绑定--->>>子类对象指向父类引用
重载(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();
}
}