zoukankan      html  css  js  c++  java
  • 《java入门第一季》之面向对象(多态练习)

    接下来经过一个例子,对多态问题加深印象:

    猫狗案例。

    /*
    	多态练习:猫狗案例
    */
    class Animal {
    	public void eat(){
    		System.out.println("吃饭");
    	}
    }
    
    class Dog extends Animal {
    	public void eat() {
    		System.out.println("狗吃肉");
    	}
    	
    	public void lookDoor() {
    		System.out.println("狗看门");
    	}
    }
    
    class Cat extends Animal {
    	public void eat() {
    		System.out.println("猫吃鱼");
    	}
    	
    	public void playGame() {
    		System.out.println("猫捉迷藏");
    	}
    }
    
    class DuoTaiTest {
    	public static void main(String[] args) {
    		//定义为狗
    		Animal a = new Dog();
    		System.out.println(a);////Dog@1db9742
    		a.eat();//狗吃肉
    		System.out.println("--------------");
    		//还原成狗
    		Dog d = (Dog)a;//向下转型
    		System.out.println(a);//Dog@1db9742
    		System.out.println(d);//Dog@1db9742
    		d.eat();//狗吃肉
    		d.lookDoor();
    		System.out.println("--------------");
    		//变成猫
    		a = new Cat();
    		System.out.println(a);//重新分配地址,重新开辟内存空间Cat@106d69c
    		d.eat();//狗的对象并没有发生变化。
    		a.eat();
    		System.out.println("--------------");
    		//还原成猫
    		Cat c = (Cat)a;
    		System.out.println(a);//Cat@106d69c
    		System.out.println(c);//Cat@106d69c
    		c.eat();
    		c.playGame();
    		System.out.println("--------------");
    		
    		//演示错误的内容
    		//Dog dd = new Animal();//动物是狗!错误!错误
    		//Dog ddd = new Cat();//猫是狗!错误
    		//ClassCastException
    		//Dog dd = (Dog)a;//a已经属于猫了,不能强制把猫转换成狗
    		a = new Dog();//可以重新分配内存空间,此时已经不再是以前的地址了,不是Dog@1db9742
    		System.out.println(a);//再一次分配了新的内存空间Dog@52e922
    	}
    }	
    
    //额外发现多态还有一个好处,定义一次引用类的变量a可以一直使用。

    相信多态是什么,以及多态的使用方式一目了然。有问题在下面一起讨论。

  • 相关阅读:
    69道Java Spring 面试&笔试题
    不少程序员都会遇到的三个问题
    Java中main方面面试题
    学生成绩表(对成绩的操作)
    Eclipse常用快捷键
    java 调用打印机 打印服务
    java 打开浏览器 url
    java 邮件发送 apache commons-email
    java 邮件收发 (只能输入英文,中文需要转码)
    jquery 画板折叠
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299856.html
Copyright © 2011-2022 走看看