如何理解java的抽象类和接口的区别?

售前免费咨询热线: 4 0 0 - 1 8 6 - 0 9 0 5
汇智资讯Huizhi information

当前位置:首页 »如何理解java的抽象类和接口的区别?

如何理解java的抽象类和接口的区别?

日期:2020-12-28 11:48:14 访问量: 来源:

类是一个范畴的东西,你是一个人,还是一个动物,是一个具体的什么动物,猫还是狗,这就是类。顶层的动物是抽象的东西,而底层的猫啊狗啊是具体的东西。也就是说类是属于某个范畴的东西,这个范畴相对明确,虽然也有一定的抽象。

java抽象类

而接口呢,是一个标准,一个规范,实现了这个接口,就意味着肯定有了相应的功能。这就是我们经常提到的实现一个接口,必须要实现接口中的所有方法。怎么理解呢?我不管你属于什么类,猫啊,狗啊之类的,你只要实现了我的alive(活着)接口,我就知道你肯定有吃eat(),喝drink(),拉crap,撒pee()这些方法。接口不关系你是什么类,它关心的是只要是实现了这个接口,肯定会实现接口中的方法,也就是说有了相应的功能。

说了这么多,在具体实践中如何运用呢?我举个实际例子来说吧,JDBC驱动,数据库有好多种,mysql,oracle,等等,那么作为程序员连接不同的数据库,是不是写的代码不一样呢?比如连接mysql用方法connectMysql()而连接oracle用方法connectOracle?这时候,接口的作用就体现出来了。我刚才说,接口是一种规范,一种标准,那么我定义一系列的接口,别管你什么mysql,oracle之类,要连接数据库,都需要实现我定义的接口,并实现connect方法;包括取数据库之类的,也是一样的。用接口来处理这种标准,不管具体的数据库是什么。

在看看jdk自身的类,HashMap和HashTable,他们不是一个范畴:一个是Map,一个是Dictionary,但是他们都实现了Map接口,所以他们的功能或者能力基本相同。

那么回到问题本身,类继承干嘛用的呢。其实这源于一种设计思想:面向抽象编程,比如我刚才提到的,你的程序中有狗,猫,还有 人这些类,他们肯定有相识的东西,你如果面向具体编程,那么猫和狗肯定有些功能或者代码是重复的,比如吼叫bellow(),那么完全可以抽象出来,把bellow这个方法放到猫和狗的父类,避免代码重复或者耦合,你要考虑如果有100个猫或者狗之类的类,如果不 放到父类中,修改这个bellow方法可能涉及100个类。

汇聚行业精英智慧

致力于高端IT技术人才培养

助力万千学员成就IT梦!

汇智动力

扫码关注 领取资料

www.hzdledu.cn

相关阅读Reading

全国热线:400-186-0905

总部热线:028-6547-1147

周一至周日9:30-24:00

我要咨询
汇智动力微信

汇智动力微信公众号

')