java中的“接口”应该怎么学?
发布网友
发布时间:2022-04-24 17:45
我来回答
共5个回答
热心网友
时间:2023-10-27 22:27
对这个概念,开始的时候没必要花太多时间去钻研,
能够理解就行.这个问题,是需要开发的实践中慢慢剖析的
下面我给你做个浅谈!
-------------------------------------------------------------------------------
不知道有没有把抽象类和接口放在一起理解过
抽象侧重于对象,接口侧重于对象的功能
-------------------------------------------------------------
抽象类:概括出了不同对象的公有属性,使别人能够大致的去了解那是一个什么样的对象.并依据这些资料,来详细设计的一种概念.
---------------------------------------------------------------
还拿常用的例子:比如动物,动物有血有肉,有生命,有感情,有名字,有性别......
当你看到"动物"这个抽象概念的时候,可能没有想这么多.但是在潜意识里,是认同这种观点的
-----------------------------------------------------------------------------------------------------------------------
接口:java中有时候称它为特殊的抽象类
接口也有抽象方法,并且方法必须是抽象的.
----------------------------------------------------
接口侧重与对动作的"抽象".它是只能证明动作的存在,但不去实现动作的具体形式
所以,听起来,它好像没有对象.也就是说没有现实生活中的实物存在.没有对象接口也就没有了它存在的实际意义!所以它是服务于对象的.是抽象类的一种补充.
而事实上,接口的应用远远超出了这个范围.有时候甚至比抽象类还要重要!
---------------------------------------------------
还拿常用的例子:动物有声音,有行为,有思想.......,这些抽象出来.设计成接口.来表示对动作的一种抽象!侧重点的同时.区别也就出来了.不是动物就不代表没有动作.机器人,也有动作也有行为.植物也有动作也有行为.所以这个动物的接口,它的试用范围就跳出了这个动物的抽象概念.
---------------------------------------------------
打个疑问:耳机可以到处使用,是耳机实现了机器的接口,还是机器实现了耳机的接口呢!
---------------------------------------------------------------------------------------------------------------
到这里差不多能分清一点头绪.抽象类是对象的抽象.接口是对象动作的抽象(有生命和无生命共有的属性)
哪个对象需要表名自己的身份,可以继承抽象类,如果想表名自己的能力.可以去实现接口!
对象只能有一个基类,但是确可以实现很多接口.对象是死的.能力是无限的(java面相对象!)
继承了同一个抽象类,那么这些子类,就可以共享基类的资源.同时也有了一个管理的标准.
在传递参数的时候,可以让基类站出来做代表.但是它只负责自己被子类所继承的属性!
由于不同对象,如果他们的基类相同.他们就具有了共有资源.也就是说.他们之间能够进行有*性的相互转换.可以根据需要,有*的进行强制转换!
这就是,一个子类只能继承一个基类.一个基类可以被多个子类继承.子类可以做为基类,被另外的子类继承.
----------------------------------------------------------------
当抽象类,把所有子类,*在一个超类的范围内的时候.
接口就实现了空前的开放!
接口不*谁去实现它,不*一个类实现多少个接口.
而且只要实现这个接口,你就必须去实现它的抽象方法.(强制性的)哪怕空实现
--------------------------------------------------------------------------------------------------------
但是有一点,一旦这些类实现了这个接口.那么这个接口,就拥有了和基类几乎相同的权利.
它的引用可以指向任意一个实现这个接口的类的对象.它在增加对象的功能的同时,它通过行为管理了很多对象.实际上是"*"了很多对象.不管这些对象是不是一个"家族"的(多态)
----------------------------------------------------------------------------------------------
如果一个类实现了一个接口,但是并不实现接口的某个类,那么这个类也是抽象类!
但是不能因为这个就下定义认为接口的应用超过了抽象类!.因为飞机飞的再高,也是没有智慧!
--------------------------------------------------------------
回头,再看,抽象类为什么有自己的抽象方法,不是也可以去抽象动作吗?
没错,抽象类,也可以有自己的抽象方法.不是有的时候,而是很多时候.
甚至看上去可以不需要接口.在这里没什么可争执的.
技术是用来方便和促进生产的,生产力要适应生产方式才行
------------------------------------------------------------------------
在需要它的时候,它能适时的出现,并能为开发发挥非常优秀的性能.那才是它的价值
就好像写一个HelloWord一样,没人要求里面有几个方法,没人要求用什么变量
是private的还是public的.索性添上一个static void方法,再加个别的什么变量.也没人指点什么
因为,它的意义只在于测试你的jdk或者一个"入门"
-----------------------------------------------------------------------------------------------------------------------
你再在百度搜点别的对比理解一下就差不多了
认真看三到五篇,对这个概念的解析.看一两个简单的例子,就差不多足够了
热心网友
时间:2023-10-27 22:27
//USB接口
interface Usb{
public void work();
}
//鼠标
public class Mouse implements Usb(){
public void work(){
System.out.println("鼠标在工作");
}
//MP3
public class MP3 implements Usb(){
public void work(){
System.out.println("MP3在工作");
}
//电脑
public class PC{
Usb[] usbArray;//
public PC(){
usbArray = new Usb[6];//这个PC支持6个USB接口
}
public void runUsb(){
for(int i=0;i<usbArray.length;i++){
if(usbArray[i]!=null){
usbArray[i].work();
}
}
}
//usbArray的getter和setter;
}
//测试类
public class Test{
public static void main(String[] argv){
PC pc = new PC();
pc.getUsbArray()[0]= new MP3();
pc.getUsbArray()[1] = new Mouse();
pc.runUsb();
}
}
这个代码示例的意思就是说,电脑只需要知道设备是USB接口的,而不关心是鼠标还是MP3 都能让它工作,接口这个概念在程序设计的时候尤为重要。
热心网友
时间:2023-10-27 22:28
切身体会:对于初学者 找一本java初级的入门书籍从头到尾按照书中的知识跟着看 例子跟着做,每天8小时以上一个月后 你就是java通了 至于书籍 孙鑫的 和
热心网友
时间:2023-10-27 22:29
深层次的理解,接口其实是一种标准,一种框架。你想要使用它,就必须遵守他的规则
热心网友
时间:2023-10-27 22:29
接口就相当于诺言承诺 必须实现
实现某个接口就要实现里面所有的方法
里面所有的方法都是抽象的