继承和多态

来源:互联网 发布:徒知徐州 河决曹村 编辑:程序博客网 时间:2024/04/28 18:23

菜鸟教你学JAVA之继承与多态

今天是教师节首先对全天下的教师说句:“您们辛苦了,教师节快乐!这里为您们送上一份礼物希望您能满意!”今天本菜鸟想讲一下与继承有关的多态性。当父类的某个方法被其子类重写时,可以各自产生自己的功能行为,同一个操作被不同类型对象调用时可能会产生不同的行为。

如 果一个类有很多子类,并且这些子类都重写了父类的某个方法,当我们把子类创建的对象的引用放到一个父类的对象中,就得到了该对象的一个上转型对象,那么这 个上转型对象在调用这个方法时就可能具有多种形态,因为不同的子类在重写父类的方法时可能产生不同的行为。例如如下这个例子,American的上转型对象调用“Speak”方法时产生的行为是“Happy Teacher's day”而Japanese的上转型对象调用“Speak”方法时产生的行为是“"教師の日、おめでとうございます”也就是说不同对象的上转型对象调用同一方法可能产生不同的行为。

ExtendAndDuotai.java

//******************************************

abstract class People                            //定义了一个抽象类,不能用new创建对象,必须由子类创建对象。

{

         public abstract void Speak();       //定义了一个抽象方法,只能声明,在子类中实现。

          }

//***************************************

class  American extends People             //子类American继承了父类People

{

         public void Speak()                      //实现父类中抽象方法

            {

                   System.out.println("Happy Teacher's day");

                  }

}

//***************************************************

class  Japanese extends People                //子类Japanese继承了父类People

{

         public void Speak()                        //实现父类中抽象方法

         {

                   System.out.println("教師の日、おめでとうございます");

          }

}

//******************************************************

class  Chinese extends People                 //子类Chinese继承了父类People

{

         public void Speak()                        //实现父类中抽象方法

         {

         System.out.println("教师节快乐!");

         }

}

//*****************************************************

class ExtendAndDuotai                           //定义了一个主类,实现多态

{

            public static void main(String args[])

{

            People xiaochao;                          //父类声明了一个对象xiaochao

            if(Math.random()<=0.33)            // Math.random()产生01的随机数

             {

                 xiaochao=new American();        // American类的上转型对象

             xiaochao.Speak();

             }

            else if(Math.random()>0.33&&Math.random()<=0.66)

            {

                 xiaochao=new Japanese();          // Japanese类的上转型对象

              xiaochao.Speak();

           }

          else

           {

             xiaochao=new Chinese();                // Chinese类的上转型对象

             xiaochao.Speak();

            }

          }

}

运行结果:

 

D:/java_homework1/classes>java ExtendAndDuotai

教師の日、おめでとうございます

D:/java_homework1/classes>java ExtendAndDuotai

教师节快乐!

D:/java_homework1/classes>java ExtendAndDuotai

Happy Teacher's day

 
原创粉丝点击