一、我们通常使用抽象类来抽象要使用多态的方法:
特点:
1.必须要有继承关系,在抽象类中可以定义多态的抽象方法,通过子类来继承这个抽象类然后复写抽象类中的抽象方法以达到多态的效果。
2.多态子类的实例可以赋给父类的引用
abstract class Teacher{
String name;
/**
*父类提供一个抽象方法让子类以多态形式体现
*/
public abstract void TeachLession();
/**
*提供一个普通的共性的方法给每个一子类使用
*/
public void Sleep(){
System.out.println(name+"正在睡觉");
}
}
/**
*创建JavaTeacher
*/
class JavaTeacher extends Teacher{
public void TeachLession(){
System.out.println(name+"正在教Java课");
}
}
/**
*创建PHPTeacher
*/
class PHPTeacher extends Teacher{
public void TeachLession(){
System.out.println(name+"正在教PHP课程");
}
}
/**
*创建一个领导类
*/
/**class leader{
//如果存在多个学科的老师,就要求领导类有多个考察方法
public void CheckJavaTeacher(JavaTeacher jt){
System.out.println(“考察开始”);
jt.TeachLession();
System.out.println(“考察结束”);
}
public void CheckPHPTeacher(PHPTeacher pt){
System.out.println("考察开始");
pt.TeachLession();
System.out.println("考察结束");
}
}
//多态子类的实例可以赋给父类的引用
class Leader{
public void CheckTeacher(Teacher t){
System.out.println(“考察开始”);
t.TeachLession();
System.out.println(“考察结束”);
}
}
class TestTeacher2{
public static void main(String []args){
JavaTeacher jt = new JavaTeacher();
jt.name = "chueng";
jt.TeachLession();
jt.Sleep();
Leader leader = new Leader();
leader.CheckTeacher(jt);
System.out.println("----------");
/**
leader ct = new leader();
ct. CheckJavaTeacher(jt);
ct.CheckPHPTeacher(pt);
*/
PHPTeacher pt = new PHPTeacher();
pt.name = "kim";
pt.Sleep();
pt.TeachLession();
leader.CheckTeacher(pt);
}
}
二、利用多态中子类的实例可以赋给父类的引用实现多态的程序设计
abstract class Teacher{
String name;
/**
* 父类提供一个抽象方法让子类以多态形式体现
*/
public abstract void teachLession();
/**
* 父类提供一个普通的共性的方法给每一个子类使用
*/
public void sleep(){
System.out.println(name + "在睡觉");
}
}
/**
* 创建JavaTeacher
*/
class JavaTeacher extends Teacher{
public void teachLession(){
System.out.println(name+"在讲java多态");
}
}
/**
* 创建NetTeacher
*/
class NetTeacher extends Teacher{
public void teachLession(){
System.out.println(name+”在讲.Net基本语法”);
}
}
class Leader{
/**
* 利用多态中子类的实例可以赋给父类的引用实现多态的程序设计
*/
public void checkTeacher(Teacher t){
String teacher = null;
if(t instanceof JavaTeacher){
teacher = "java老师";
}else{
teacher = ".Net老师";
}
System.out.println(teacher + "考察开始");
t.teachLession();
System.out.println(teacher +"考察结束");
}
}
class Tes**tTeacher3{
public static void main(String [] args){
JavaTeacher jt = new JavaTeacher();
jt.name = "任亮";
NetTeacher nt = new NetTeacher();
nt.name = "张三";
Leader leader = new Leader();
leader.checkTeacher(jt);
leader.checkTeacher(nt);
}
}