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就有多种表现形态。***
多态产生必须有以下条件:①必须有继承;②必须有方法重写;③必须是父类声明,实际是子类对象。 ,
多态使得代码高效重用,也使得系统的可扩展性增强。