java 的 多态机制

来源:互联网 发布:吉利电动车知豆d1报价 编辑:程序博客网 时间:2024/06/05 15:19

首先 java 的多态 应满足3 个 条件 1.必须有继承  2.必须有重写 3.父类的引用 指向子类的对象

对于 前2 个 我想 大多数人 都因该明白 第3 个 有点 难以理解  用一段 简代码

public class Animal{

public String name;

Animal(String name){

this.name=name;

}

public void enjoy();{

System.out.printn("叫声。。。。")

}

}

class Cat extends Animal{  //继承

private String eyecolor;

Cat(String name,String eyecolor){

super(name);

this.eyecolor=eyecolor;}

public void enjoy(){    //重写 

System.out.println("猫叫声。。。。");  

}

}

class lady{

private String name;

private Animal pet;

lady(String name,Animal pet)

this.name=name;

this.pet=pet;

public void myenjoy(){

pet.enjoy();}

}

public static void main(String[] args){

Cat a =new Cat("a1",“a2");     //而  这两个 就可以 看作 父类引用指向子类对象 相当于 多了个  Animal pet=new Cat("a1",a2"");

lady b =new lady("l1",a);          //而  这两个 就可以 看作 父类引用指向子类对象 相当于 多了个  Animal pet=new Cat("a1",a2"");

}

则 他最大的好处就是 动态绑定  是体现在 动(运行)得过程中 a在 栈  指向 cat 的 堆   b栈  指向 lady堆  lady中德 a指向 cat堆中的父类 除了 这两个 区域  还有一个 专门写

各类的方法(重写的)的 而  则 会 在执行的时候 实际上new的谁  就会调用谁的重写方法 若没有这种机制 则就会在lady中德myenjoy方法中判断 非常麻烦 因此 他的好处 一个安全性高 可扩展性大  这也是 java面向对象的核心

0 0
原创粉丝点击