多态

时间:2019-03-25
本文章向大家介绍多态,主要包括多态使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

package com.byxy;

public class Person {

private String name;
private int age;
private char gender;
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public char getGender() {
	return gender;
}
public void setGender(char gender) {
	this.gender = gender;
}
public Person() {
	super();
	// TODO Auto-generated constructor stub
}
public Person(String name, int age, char gender) {
	super();
	this.name = name;
	this.age = age;
	this.gender = gender;
}
public void print() {
	System.out.print("我是"+name+"我年龄是"+age+"岁,我性别是:"+gender);
}
public void learn() {
	
}

}

public class Teacher extends Person {

private String majorField;

public String getMajorField() {
	return majorField;
}

public void setMajorField(String majorField) {
	this.majorField = majorField;
}

public Teacher() {
	super();
	// TODO Auto-generated constructor stub
}

public Teacher(String name, int age, char gender) {
	super(name, age, gender);
	// TODO Auto-generated constructor stub
}

public Teacher(String majorField) {
	super();
	this.majorField = majorField;
}

@Override
public void print() {
	// TODO Auto-generated method stub
	super.print();
	System.out.println(",我的授课方向是:"+this.majorField);
}

@Override
public void learn() {
	// TODO Auto-generated method stub
	super.learn();
	System.out.println("1.表达准确");
	System.out.println("2.讲解思路清晰");
}

}

package com.byxy;

public class Student extends Person {

private System grade;

public System getGrade() {
	return grade;
}

public void setGrade(System grade) {
	this.grade = grade;
}

public Student() {
	super();
	// TODO Auto-generated constructor stub
}

public Student(String name, int age, char gender) {
	super(name, age, gender);
	// TODO Auto-generated constructor stub
}

public Student(System grade) {
	super();
	this.grade = grade;
}

@Override
public void print() {
	// TODO Auto-generated method stub
	super.print();
	System.out.println(",我的授课方向是:"+this.grade);
}

@Override
public void learn() {
	// TODO Auto-generated method stub
	super.learn();
	System.out.println("1.不迟到.早退.旷课");
	System.out.println("2.课堂认真学习");
}

}

//创建的监督类
package com.byxy;

public class Supervisor {

public void Supervise(Person p) {
	System.out.println("开始监督.........");
	p.learn();
}

}

package com.byxy;

public class Test {

public static void main(String[] args) {
	// TODO Auto-generated method stub

\p对象是person类所有子类的对象
Supervisor supervisor=new Supervisor();
supervisor.Supervise(new Student());
supervisor.Supervise(new Teacher());
}

}
在上面的督导类中的监督方法supervise(Person p)中可以看到,这个监督方法所带、、I。参数是Person对象,在测试类中调用这个方法时给的实际对象是Teacher对象和Student对象,在运行“p. learn();"语句的时候,Java虚拟机能够根据实际给出的对象正确找到要执行的方法,也就是说***p对象实际可以是Teacher对象,也可以是Student对象,以及所有继承了Person类的子类对象,这种现象就叫多态,也就是多种表现形态,P就有多种表现形态。***
多态产生必须有以下条件:①必须有继承;②必须有方法重写;③必须是父类声明,实际是子类对象。 ,
多态使得代码高效重用,也使得系统的可扩展性增强。