多态性是面向对象技术三大特征之一,多态性包括两种类型:静态多态性和动态多态性。注意:当类定义中出现同名的成员域是,不仅与多态性没有关系,而且一般是不提倡的。
静态多态性指的是在同一个类中同名方法在功能上的重载(overload)。这也包括一个类对其父类同名方法在功能上的重载,而且在方法声明的形式上要求同名的方法具有不同的参数列表。这里方法可以是成员方法,也可以是构造方法。不同的参数列表是的是方法的参数个数不同、参数的数据类型不同或者参数的数据类型排列顺序不同。
package J_Student;
public class J_Student {
public int m_id; //学号
public int m_age; //年龄
public J_Student()
{
mb_setData(200810400,19);
}//J_Student构造方法结束
public J_Student(int id,int age)
{
mb_setData(id,age);
} //J_Student构造方法结束
public void mb_setData(int id,int age)
{
m_id=id;
m_age=age;
} //方法mb_setData结束
public void mb_setData(int id)
{
m_id=id;
}//方法mb_setData结束
public static void main(String arges[])
{
J_Student jack=new J_Student();
jack.mb_setData(2008010408);
J_Student lisa=new J_Student();
lisa.mb_setData(2008010428,18);
System.out.print("Jack的学号是"+jack.m_id);
System.out.println(",年龄是"+jack.m_age);
System.out.print("Lisa的学号是"+lisa.m_id);
System.out.println(",年龄是"+lisa.m_age);
}//方法main结束
}//类J_Student结束
在上面的例程中,构造方法和成员方法mb_setData都采用了静态多态性,即上面出现了互不冲突的多个构造方法和多个成员方法mb_setData。这样,在方法调用 jack.mb_setData(2008010408);时java虚拟机自动根据调用参数列表查找与其相匹配的方法public void mb_setData(int id)
同样,java虚拟机自动根据调用参数列表确定方法调用lisa.mb_setData(2008010428,18);调用的是成员方法 public void mb_setData(int id,int age)因为它们不仅参数个数相同,而且类型也相匹配。
类的成员方法 简称为方法,通常用来实现类的各种功能
构造方法和成员方法的区别:
A 格式区别:构造方法和类名相同,并且没有返回类型,也没有返回值
普通成员方法可以任意起名,必须有返回类型,可以没有返回值
B 作用区别:构造方法用于创建对象,并进行初始化值
普通成员方法是用于完成特定功能的
C 调用区别: 构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数
普通成员方法是由创建好的对象调用,可以调用多次。