
多态性是面向对象思想中的一个非常重要的概念,
在Java中,多态是指"不同对象"在调用"同一个方法"时表现出的"多种不同行为"。
例如,要实现一个动物叫的方法,由于每种动物的叫声是不同的,
因此可以在"方法中接收一个动物类型(父类)的参数",
当传入猫类对象时就发出猫类的叫声,
传入犬类对象时就发出犬类的叫声。
"在同一个方法中,这种"由于参数类型不同"而导致执行效果不同的现象就是多态。"Java中多态主要有以下两种形式:
(1)方法的重载。 (方法名相同,参数不同,其对应功能不同,来保证的)
(2)对象的多态性(方法重写来保证的)。多态:事物表现的不同形态
前提:
1•必须有继承或接口实现关家(本次用"继承"来实验)
2•必须有方法重写
3•必须有"父类引用指向子类对象"(向上转型)
好处:提高方法的灵活性如果一个方法中使用父类或父接口作为形式参数,将来调用该方法时,可以传递任意的子类对象public abstract class anmalsk / 抽象动物父类
{public abstract void shout(); / 因为动物叫声是不一样的,所以用抽象函数来体现
}public class dog1 extends anmalsk /狗继承动物类,并"重写"动物类的抽象函数
{ public void shout(){System.out.println("狗汪汪叫"); }
}public class cat1 extends anmalsk /猫继承动物类,并"重写"动物类的抽象函数{public void shout(){System.out.println("猫喵喵叫"); }
}public class text6 { /主函数测试类public static void main(String[] args){
方法 1 anmalsk a= new dog1(); /父类的引用指向子类对象对应方法1 a.shout(); /父类的引用指向子类对象的好处:父类对象可调用子类函数方法 2dog1 d=new dog1();usedog1(d);cat1 c=new cat1();usecat1(c); 方法 3dog1 d=new dog1(); /使用父类或父接口作为形式参数,将来调用该方法时,可以传递任意的子类对象useAnimal(d);cat1 c=new cat1();useAnimal(c);}对应方法 2 public static void usecat1(cat1 c){c.shout();}public static void usedog1(dog1 d){d.shout();}对应方法 3
public static void useAnimal(anmalsk a) /将父类作形式参数{ a.shout();}}
