好贷网好贷款

java中的多态及其内存分析

发布时间:2016-12-5 6:34:58 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java中的多态及其内存分析",主要涉及到java中的多态及其内存分析方面的内容,对于java中的多态及其内存分析感兴趣的同学可以参考一下。

            多态(polymorphism):在执行期间(而非编译器)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。由于是在运行期的动态实现,直到new出对象才能确定具体调用的哪个方法,因此多态又叫动态绑定,也叫迟绑定。    实现条件                 1.类之间继承或者实现接口;             2.方法重写;             3.父类引用指向子类对象。    练习                    猫、狗类实现抽象类动物的enjoy()方法,main方法中实现enjoy()方法的动态调用。             代码实现: abstract class Animal { private String name; Animal(String name) { this.name = name; } public abstract void enjoy(); } class Cat extends Animal { private String eyescolor; Cat(String name,String eyescolor) { super(name); this.eyescolor = eyescolor; } public void enjoy() { System.out.println("猫叫声。。。"); } } class Dog extends Animal { private String furcolor; Dog(String name,String furcolor) { super(name); this.furcolor = furcolor; } public void enjoy() { System.out.println("狗叫声。。。"); } } /* class Bird extends Animal { Bird() { super("bird"); } 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 myPetEnjoy() {pet.enjoy();} } public class Test { public static void main(String[] args) { Dog g = new Dog("mydog","black"); Cat c = new Cat("mycat","blue"); Bird b = new Bird(); Lady l1 = new Lady("l1",g); Lady l2 = new Lady("l2",c); //Lady l3 = new Lady("l3",b); l1.myPetEnjoy(); l2.myPetEnjoy(); //l3.myPetEnjoy(); } }                运行结果:                内存分析:                               stack中存放临时变量,heap中存放new出的实例对象,为简单起见,图中略去了代码中Dog类对象以及相应的l1对象。         多态的实现是通过调用方法为运行时动态生成的Cat对象指向的Cat:enjoy()方法实现。 特性:         多态的存在能够更好的让我们去实现代码的可扩展性(具体练习中可将Bird类、main方法的注释去掉,则会在无需修改其他类的情况下实现鸟叫声的扩展),大大提高了我们程序的灵活性。 总结:         多态在之前已有过学习,但理解并不是深入,通过这次学习的相应内存分析,还是深刻了很多,对内存也有过一些了解,但之前并没有将这两方面的学习联系起来,分析内存对程序的运行过程有了进一步的了解。

上一篇:对中国商业银行前中后台分离的反思
下一篇:Servlet线程安全性解析

相关文章

相关评论