抽象类实现多态:
父类对象指向子类对象,可调用子类的重写方法。
接口实现多态:
接口对象指向实现类对象,可调用实现类的重写方法
以下就是生活中两种多态的实例,**抽象类是模板,接口是功能。
**描述:
Door.java 抽象类
package com.dialogd.polymorphic;
//抽象类,抽象类是一种模板
public abstract class Door {
//开门的方法
public abstract void open();
}
IFace.java 接口1
package com.dialogd.polymorphic;
//人脸识别的功能,接口是功能时
public interface IFace {
//人脸识别的功能
public void checkFace();
}
IHander.java 接口2
public interface IHander {
//指纹识别功能
public void checkHander();
}
SafeDoor.java
public class SafeDoor extends Door implements IHander {
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("普通安全门开门...");
}
@Override
public void checkHander() {
// TODO Auto-generated method stub
System.out.println("普通安全门的指纹识别...");
}
}
SuperDoor.java
public class SuperDoor extends Door implements IHander,IFace {
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("超级安全门开门...");
}
@Override
public void checkFace() {
// TODO Auto-generated method stub
System.out.println("超级防盗门的人脸识别...");
}
@Override
public void checkHander() {
// TODO Auto-generated method stub
System.out.println("超级防盗门的指纹识别...");
}
}
Test.java
public class Test {
public static void main(String[] args) {
//抽象类实现多态
Door door = new SafeDoor();
//父类对象指向子类对象,可调用子类的重写方法
door.open();
door = new SuperDoor();
door.open();
//接口实现多态
IHander iHander = new SafeDoor();
//接口对象指向实现类对象,可调用实现类的重写方法
iHander.checkHander();
iHander = new SuperDoor();
iHander.checkHander();
IFace iFace = new SuperDoor();
iFace.checkFace();
}
}
抽象类Door.java对子类(普通安全门)SafeDoor.java、(超级安全门)SuperDoor.java实现了多态。
接口IHander、IFace对是实现类SafeDoor.java、SuperDoor.java实现了多态。