多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
多态存在的条件:
有继承关系
子类重写父类方法
父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性
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();
}
}
} }