一,多态的概述
多态来源于一种实物的多种表现形态,例如:你是个一个人,同时也是一个学生, 一个事物,有不同的表现形态。这是多态
二,多态的定义
父类的引用指向子类对象。
1.普通定义
父类变量名 变量 = new 子类变量名();
2.抽象类定义
抽象类名 变量 = new 抽象类子类变量名();
3.接口定义
接口类名 变量 = new 接口子类变量名();
public abstract class People {
abstract void speak();
}
public class Birtsh extends People {
@Override
void speak() {
System.out.println("Hello");
}
}
public class Chinese extends People {
@Override
void speak() {
System.out.println("雷猴~");
}
}
public class Test {
public static void main(String[] args) {
People p1 = new Chinese();
People p2 = new Birtsh();
p1.speak();
p2.speak();
}
}
三,多态的具体实现
1.使用父类作为方法的形参
2.使用父类当作方法的返回值
这两个方法主要使创建对象;
public abstract class People {
abstract void speak();
}
public class Test {
static People makePeople(int type){
People pp;
if (type==1){
pp = new Chinese();
}if (type==0){
pp = new Birtsh();
}else{
pp = null;
}
return pp;
}
public static void main(String[] args) {
// People p1 = new Chinese();
// People p2 = new Birtsh();
// p1.speak();
// p2.speak();
People p1 = makePeople(1);
if (p1 ==null){
System.out.println("创建失败");
}else{
if (p1 instanceof Chinese){
Chinese pp1 = (Chinese) p1;
pp1.speak();
}else{
System.out.println("不是中国人");
}
}
}
}
四.instanceof 用法:
主要用来判断父类创建的对象是否是子类的类型
这是用来判断类型的关键字。