理论概念
多态是java中非重要的概念,它的实现基于继承和封装,就是说多态必须前提是有子类继承父类,父类为提供这些接口方法,给子类覆盖或实现。子类必须完善这些父类提供的方法。或者子类向上转型为父类,实现多态。
java的多态分为两种:1,编译时多态,2,运行时多态
1,所谓编译时多态就是在编译阶段就已经绑定好关系(实际应用最多)
2,所谓运行时多态就是在程序装入内存后,运行到某个方法区才会绑定上
父类
package com.ufgov.pd.fiscal.test;
/**
* 模板
*
* @author yangwf
* @date 2022-11-13 20:36
*/
public abstract class AbstractClassA {
public void getAgency(IAinterface inter, String data){
//-------------------
//------抽取业务代码段--
//-------------------
inter.getRun("测试数据",data);
}
}
子类A
/**
* 模板
*
* @author yangwf
* @date 2022-11-13 20:37
*/
public class A extends AbstractClassA{
public void getClassA(String a){
IAinterface face = new IAinterface() {
@Override
public void getRun(String param,String n) {
System.out.println(param + "?" + n);
}
};
this.getAgency(face,a);
}
}
子类B
package com.ufgov.pd.fiscal.test;
/**
* 模板
*
* @author yangwf
* @date 2022-11-13 20:48
*/
public class B extends AbstractClassA{
public void getClassB(String b){
IAinterface face = new IAinterface() {
@Override
public void getRun(String param, String n) {
System.out.println(param + "?" + n);
}
};
this.getAgency(face,b);
}
}
接口类
package com.ufgov.pd.fiscal.test;
/**
* 模板
*
* @author yangwf
* @date 2022-11-13 20:41
*/
public interface IAinterface {
void getRun(String param,String n);
}
测试类
package com.ufgov.pd.fiscal.test;
/**
* 模板
*
* @author yangwf
* @date 2022-11-13 21:04
*/
public class C {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.getClassA("---类A的数据---");
b.getClassB("---类B的数据---");
}
}
测试结果
测试数据?---类A的数据---
测试数据?---类B的数据---