一个接口有多个实现类,当调用接口中的方法
1个回答
2018-01-23 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
一、简单例子:
1. 直接new一个实例,这样肯定知道用的哪个实例
2. 定义接口类型的变量,用某个实例去初始化。。。这样也是肯定知道用的哪个实例
一般我们用第二种方式有一个好处,如果以后要改动,那么只需要修改其引用的实例,改动较少!
举个例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉
需要得到"吃肉",那么 A a = new A3();
需要得到"吃饭",那么 A a = new A1();
二、看代码发现的例子:
接口:
public interface CsBaseService {
//获得总记录条数
public int getTotalCount(JDBCBean jdbcBean);
}
实现类1:
@Service
public class CsLastUpdateService implements CsBaseService {
@Override
public int getTotalCount(JDBCBean jdbcBean) {
return 0;
}
}
实现类2:
public class CsRelateModelService implements CsBaseService {
@Override
public int getTotalCount(JDBCBean jdbcBean) {
return 2;
}
}
调用的时候:
public class RelateModelController extends BaseController{
@Autowired
private CsRelateModelService relateModelService;//自动装配实现类2
initParamProcess(relateModelService,new RelateModel(),new Page());//初始化实现类2,关键在这步,指定relateModelService为beaseService,具体见BaseController类
int totalCount = beaseService.getTotalCount(jdbcBean);//然后直接调用实现类2的方法,输出为2
}
RelateModelController 的父类BaseController
public abstract class BaseController {
void initParamProcess(CsBaseService beaseService, JDBCBean jdbcBean,
Page page) {
this.beaseService = beaseService; //指定哪个实现类为beaseService
this.jdbcBean = jdbcBean;
this.page = page;
}
}
1. 直接new一个实例,这样肯定知道用的哪个实例
2. 定义接口类型的变量,用某个实例去初始化。。。这样也是肯定知道用的哪个实例
一般我们用第二种方式有一个好处,如果以后要改动,那么只需要修改其引用的实例,改动较少!
举个例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉
需要得到"吃肉",那么 A a = new A3();
需要得到"吃饭",那么 A a = new A1();
二、看代码发现的例子:
接口:
public interface CsBaseService {
//获得总记录条数
public int getTotalCount(JDBCBean jdbcBean);
}
实现类1:
@Service
public class CsLastUpdateService implements CsBaseService {
@Override
public int getTotalCount(JDBCBean jdbcBean) {
return 0;
}
}
实现类2:
public class CsRelateModelService implements CsBaseService {
@Override
public int getTotalCount(JDBCBean jdbcBean) {
return 2;
}
}
调用的时候:
public class RelateModelController extends BaseController{
@Autowired
private CsRelateModelService relateModelService;//自动装配实现类2
initParamProcess(relateModelService,new RelateModel(),new Page());//初始化实现类2,关键在这步,指定relateModelService为beaseService,具体见BaseController类
int totalCount = beaseService.getTotalCount(jdbcBean);//然后直接调用实现类2的方法,输出为2
}
RelateModelController 的父类BaseController
public abstract class BaseController {
void initParamProcess(CsBaseService beaseService, JDBCBean jdbcBean,
Page page) {
this.beaseService = beaseService; //指定哪个实现类为beaseService
this.jdbcBean = jdbcBean;
this.page = page;
}
}
广东轻亿云软件
2024-05-14 广告
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更...
点击进入详情页
本回答由广东轻亿云软件提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询