JAVA多态 扩展性及 转型

来源:互联网 发布:小牛大数据 编辑:程序博客网 时间:2024/05/16 23:46

//仅作为学习笔记

/*1,多态的体现父类的引用指向自己的子类对象父类的引用也可以接收自己的子类对象2,多态的前提必须是类与类之间有关系,要么继承 要么实现通常还有一个前提:存在覆盖3,多态的好处多态的出现大大的提高了程序的扩展性4,多态的弊端提高了扩展性,但是只能使用父类的引用来访问父类中的成员5,多态的引用*/abstract class Animal{public abstract void eat();//具体功能由子类自己定义}class Cat  extends Animal{public void eat(){System.out.println("Eat fish!!");}void fun1(){System.out.println("So cute!!");}}class Dog extends Animal{public void eat(){System.out.println("Eat bone!!");}void fun2(){System.out.println("Watch home!");}}class Test{public static void main(String []args){Animal a = new Cat();//类型转换  向上转换function(a);Cat c = (Cat)a;//类型转换 向下转型//父类的引用指向了子类的对象, 该对象既可以被向上转型 也可以向下转型c.fun1();function(new Dog());}public static void function(Animal a){a.eat();//instanceof是Java的一个二元操作符,和==,>,<是同一类东东。//由于它是由字母组成的,所以也是Java的保留关键字。//它的作用是测试它左边的对象是否是它右边的类的实例if( a instanceof Cat ){Cat q = (Cat)a;q.fun1();}else if( a instanceof Dog ){Dog d = (Dog)a;d.fun2();}}}