多态

一、我们通常使用抽象类来抽象要使用多态的方法:
特点:
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);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值