网站修改,友情链接代码美化,网页游戏大全下载,2023年房地产行业分析目录多态的概念对象上下转型多态应用之打印机多态的概念
多态是指同一个操作作用于某一类对象#xff0c;可以有不同的解释#xff0c;产生不同的执行结果。比如#xff1a;猫吃鱼、狗吃肉、人吃米饭。
多态存在的三个必要条件:
需要存在继承#xff08;extends#xf…
目录多态的概念对象上下转型多态应用之打印机多态的概念
多态是指同一个操作作用于某一类对象可以有不同的解释产生不同的执行结果。比如猫吃鱼、狗吃肉、人吃米饭。
多态存在的三个必要条件:
需要存在继承extends或实现接口关系同样的方法调用而执行不同操作、运行不用代码重写在运行时父类或者接口的引用变量可以引用其子类的对象
多态的作用
多态通过分类做什么eat和怎么做猫和狗eat不一样从一个角度将接口和实现进行分离多态消除了类型之间的耦合关系多态的存在提高了程序的拓展性和后期的可维护性
例子直接点击运行提示缺少cat类右击run as运行成功 why?
//或者abstract class Animal
class Animal
{String name;public void eat();//或者abstract public void eat();
}class Dog extends Animal
{public void eat(){//区分重写和重载System.out.println(狗啃骨头);}}class Cat extends Animal
{public void eat(){System.out.println(猫吃鱼);}
}public class Test {public static void main(String[] args){Animal an1 new Dog();//在运行时父类或者接口的引用变量可以引用其子类的对象Animal an2 new Cat();//属于下面讲的向上转型 子类向父类转 an1.eat();an2.eat();}
}对象上下转型 由子类转型成父类在继承图上是向上移动的一般称为向上转型 向上转型是从一个较专用类型向通用类型转换所以总是安全的也就是说子类是父类的超集 向上转型过程中类接口中唯一可能发生的事情是丢失方法而不是获取方法 与之相反的操作是向下转型不安全可能需要instanceof操作符协助
例子
//或者abstract class Animal
class Animal
{String name;public void eat();//或者abstract public void eat();
}class Dog extends Animal
{public void eat(){//区分重写和重载System.out.println(狗啃骨头);}}class Cat extends Animal
{public void eat(){System.out.println(猫吃鱼);}public void sleep(){System.out.println(猫睡觉);}
}public class Test {public static void main(String[] args){Animal an1 new Dog();Animal an2 new Cat();an1.eat();//an2.sleep(); 向上转型丢失方法Cat cat1 new Cat();//这样就不会丢失方法cat1.sleep();if(an1 instanceof Cat){ //instanceof通过返回值布尔值指出对象是否是特定类或是它的一个子类System.out.println(aa);}if(an2 instanceof Cat){System.out.println(bb);Cat cat2 (Cat)an2;//类型强转,类似C语言cat2.eat();}}
}运行结果
狗啃骨头
猫睡觉
bb
猫吃鱼多态应用之打印机