java接口继承,继承JAVA
大家好,如果您还对java接口继承不太了解,没有关系,今天就由本站为大家分享java接口继承的知识,包括继承JAVA的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
java中接口可以继承多个接口吗
接口是常量值和方法定义的集合。接口是一种特殊的抽象类。
java类是单继承的。classB Extends classA
java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
自我看法
因为类如果可以多继承,实例化时,如果要跳用父类的方法,如果两个一样,
根本就不知道该调用那个父类的方法;
但是接口就不一样了,因为接口继承多个接口,就算多个接口有相同的方法,
但是最终实现接口的类只能实现一个方法且@Override一个方法,所以调用时就
不会有问题了
注意:
1)一个类如果实现了一个借口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。
Java中继承和接口的区别
1,一个类只能继承一个类,但是可以实现多个接口。
2,依赖倒转原则:依赖抽象(例如接口),不要依赖于实现。
3,合成/聚合复用原则(CARP):尽量使用合成/聚合,而不是继承关系达到复用的目的。
4,接口传达的意思是:拥有某种功能,能干嘛,比如:Serializable代表可序列化的。
5,继承传达的是意思是:is-a,比如:猫是一个动物,猫就是动物的子类。
之前在远标java毕业时问过同学
java的继承.重载.接口.分别是什么含义
在java上
覆盖···
就是说在父类中有一个函数M在子类中也有。但是在子类中的函数M的函数实体和父类的函数实体不同。
打个比方···
如果是父类是图像,那么在父类中的方法"画图"与子类三角形的方法"画图"肯定是不同的。因为父类可以是别的图形,而三角形只能是三角形。
这种父类有的函数子类也有但是实体不同的情况就是覆盖。
重载····
在很多情况下,一个函数是有参数的。
也就是说如果两个函数的名字相同,但是参数不同。那么这种情况就是重载。(不管函数体是不是一样的··)
这里参数不同是什么意思呢?
例如:没有参数,有参数,参数的个数,参数的类型,参数类型的排列顺序···这些如果不同的话都叫做参数不同。
但是参数名不同不是参数不同。
多态···是指用同一类型来得到或者调用不同类型的的实体。
通常情况下是这样的。
我有一个父类F这个父类F有很多子类,子类Z1,子类Z2。。。
这些子类都覆盖了父类的某个方法M
现在在某个函数要调用这些子类的方法M。但是我不知道到底是哪个子类。
因为这些方法实际上是不同的
所以如果没有多态的话。我就得去判断这个类到底是z1还是z2或者Z3等等···
而多态呢?
就是我在这个函数中直接将类型设置为父类F类型。同时这个方法也是父类里面的方法
事实上在运行的时候,如果你的实体是z1类型的,那么函数就会调用z1类里面的M而不是父类F里面的M或者其他,一次类推···
继承···
其实就是将一个大的类型范围变窄。这个小的类型是大类型的一部分。
例如"正三角形"这个类继承了"三角形"这个父类。
而"三角形"这个父类却又继承了它自己的父类"图形"
这种将特征具体化的情况就是继承。
封装····
就是说我将我的函数放在一个特定的类里面。
如果你没有权利,那么这个类是怎么实现的,还有哪些函数你是不知道的。而你能使用的这个函数是怎么实现的,你也是不知道的。
你只知道用这个函数有什么结果。那么将这种具体实现用类型隐藏起来的情况就是封装。
其实说封装封装···好像很神秘似的。
但是实际上也就是你自己写很多类而已。在主类(也就是含有main函数的公共类)使用的时候只是用各个类的实体调用这些函数。
那么接口就简单了···
给你使用的这个public类型的函数就是接口了。
当然在java里面还有另外一个东西交接口。interface····
这个是其实是一个类····但是里面的函数都是public的并且都没有实现。
需要你自己去实现。但是它实际上也是为了将public函数名统一而已。
这样别人能够使用这些函数,但是不知道这些函数的实现···
至于抽象···
就想你要写一个函数实现开灯。
那么这个实体"灯",你写成一个类型如light
在这个类里面你在实现一个函数opnLight,因为要外部调用的,需要设置成public
这样一来,这个light类就可以实现所有的灯的开灯这个动作了。
这种将由实体到类型的过程就是抽象。
如果你还想了解更多这方面的信息,记得收藏关注本站。