java中的多态

  多态其实就是多种状态,overload(重载)是多态的一种,属于编译期绑定,也就是静态绑

定(前期绑定),override 是运行期间绑定(后期绑定)。

多态的条件:

   有继承;

    有覆盖;

    父类指向子类对象的引用。

对静态方法的覆盖:

//测试程序
public class Test {

	public static void main(String[] args) {
		
		Person p1 = new Teacher();
		Person p2 = new Student();
		
		p1.m1();//person
		p2.m1();//person
	}

}
//父类
public class Person {
	private int age;
	private String name;
	private String sex;
	public static void m1(){
		System.out.println("--Person--");
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
    
}
//子类 Teacher
public class Teacher extends Person {
	public static void m1(){
		System.out.println("--Teacher--");
	}
}
//子类 Student
public class Student extends Person {
	public static void m1(){
		System.out.println("--Student--");
	}

}

   

  静态方法不存在多态的概念,多态和成员方法相关,静态方法只属于某一个类,声明的是那个一个类就调用的是哪一个类的静态方法和子类没有关系,不像覆盖了成员方法,new 谁调谁,为什么覆盖成员方法可以构成多态(多种状态),主要是运行期的动态绑定(动态绑定构成多态),静态绑定的含义是在编译成class 文件(字节码)的时候已经确定该调用哪个方法。


你可能感兴趣的:(多态)