多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
多态存在的条件:
有继承关系
子类重写父类方法
父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性
instanceof (类型转换) 引用类型
package com.oop.demo05; public class Monkey { private String name; private boolean sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isSex() { return sex; } public void setSex(boolean sex) { this.sex = sex; } public Monkey() { super(); } public Monkey(String name, boolean sex) { this.name = name; this.sex = sex; } public void speak(){ System.out.println(name+"咿咿呀呀!");
package com.oop.demo05; public class People extends Monkey{ public void speak(){ System.out.println(this.getName()+"说了一句话!"); } public void play(){ System.out.println(this.getName()+"正在打篮球!"); } } package com.oop.demo05; public class Test02 { public static void main(String[] args) { Monkey m1 = new Monkey(); m1.setName("金丝猴"); m1.speak(); //People p2 = (People) m1; if (m1 instanceof People){ People p2 = (People)m1; p2.play(); } System.out.println("====================="); People p1 = new People(); p1.setName("秦汉"); p1.play(); p1.speak(); } }
} }