- 多态是方法或对象具有多种形态,是面向对象的第三大特征。
- 多态的前提是两个对象(类)存在继承关系,多态是建立在封装和继承基础之上的。
- 对象的多态是多态的核心和重点
-
规则
- 一个对象的编译类型与运行类型可以不一致
- 编译类型在定义对象时,就确定了,不能改变,而运行类型是可以变化的
- 编译类型看定义对象时 = 号的左边,运行类型看 = 号的右边
package polymorphismdemo; public class Animal { private String color; private int age; public Animal() { } public Animal(String color, int age) { this.color = color; this.age = age; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void eat(String something){ System.out.println("动物在吃"+something); } } public class Cat extends Animal { public Cat() { } public Cat(String color, int age) { super(color, age); } public void eat(String something){ System.out.println("猫在吃"+something); } } public class Dog extends Animal { //构造方法: public Dog() { } public Dog(String color, int age) { super(color, age); } public void eat(String something){ System.out.println("狗在吃"+something); } }
package polymorphismdemo; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /*public void keepPet(Dog d,String something){ System.out.println("年龄为"+getAge()+"岁的"+getName()+"养了一只"+d.getColor()+"色的"+d.getAge()+"岁的狗"); System.out.println(d.getAge()+"岁的"+d.getColor()+"色的狗两只前脚死死地抱住"+something+"猛吃"); } public void keepPet(Cat c,String something){ System.out.println("年龄为"+getAge()+"岁"+getName()+"养了一只"+c.getColor()+"色的"+c.getAge()+"岁的猫"); System.out.println(c.getAge()+"岁的"+c.getColor()+"颜色的猫眯着眼睛侧着头吃"+something); }*/ public void keepPet(Animal a,String something){ if(a instanceof Cat ) { Cat c=(Cat)a; System.out.println("年龄为" + getAge() + "岁" + getName() + "养了一只" + c.getColor() + "色的" + c.getAge() + "岁的猫"); System.out.println(c.getAge() + "岁的" + c.getColor() + "颜色的猫眯着眼睛侧着头吃" + something); }else if(a instanceof Dog ){ Dog d=(Dog)a; System.out.println("年龄为" + getAge() + "岁" + getName() + "养了一只" + d.getColor() + "色的" + d.getAge() + "岁的狗"); System.out.println(d.getAge() + "岁的" + d.getColor() + "颜色的猫眯着眼睛侧着头吃" + something); } } }
package polymorphismdemo; public class Test { public static void main(String[] args) { Dog d=new Dog("黄",3); Cat c=new Cat("白",2); Person p=new Person("张三",33); p.keepPet(d,"骨头"); p.keepPet(c,"鱼"); } }
java多态案例
文章通过Java代码展示了多态的概念,包括Animal、Cat和Dog类的继承关系。Person类的keepPet方法利用多态处理不同类型的宠物(Dog和Cat),在运行时决定实际的行为。通过main方法执行,显示了多态的动态绑定特性。
摘要由CSDN通过智能技术生成