当前位置: 技术问答>java相关
深入探讨java的接口和抽象的内涵!
来源: 互联网 发布时间:2015-02-07
本文导语: 搞来搞去还是不是真正的明白其内涵! 请给一点高的见解! | 我谈一下本人的关点,如有不对请多指教。 接口:我认为是建立在不同对象,所要实现共同的特性。如:对象电灯、电梯、汽车。。。它们...
搞来搞去还是不是真正的明白其内涵!
请给一点高的见解!
请给一点高的见解!
|
我谈一下本人的关点,如有不对请多指教。
接口:我认为是建立在不同对象,所要实现共同的特性。如:对象电灯、电梯、汽车。。。它们是 不同的对象,可要运行它们,都会有一个启动的特性(开关),那么这个特性我认为就可以 放在一个接口中实现。
抽象:我认为是建立在同一对象的基础之上的,要对同一类对象的同一个特性进行详细的说明或许 要用到它,因为在同一类对象中,具体到各不同的实体时,都会在相同的特性的实现上有部 分的差别,所以使用这种“抽象”来解决。
-------------------------------------------------------------------------
以上是个人关点,如有不适之处还望高手提出。
同时希望大家,多提出一些在这两方面在实用中的经验。
接口:我认为是建立在不同对象,所要实现共同的特性。如:对象电灯、电梯、汽车。。。它们是 不同的对象,可要运行它们,都会有一个启动的特性(开关),那么这个特性我认为就可以 放在一个接口中实现。
抽象:我认为是建立在同一对象的基础之上的,要对同一类对象的同一个特性进行详细的说明或许 要用到它,因为在同一类对象中,具体到各不同的实体时,都会在相同的特性的实现上有部 分的差别,所以使用这种“抽象”来解决。
-------------------------------------------------------------------------
以上是个人关点,如有不适之处还望高手提出。
同时希望大家,多提出一些在这两方面在实用中的经验。
|
大型项目开发之前要给每一个小组成员分配任务
所以要有一种“先定义”一个空函数
“后实现”这个函数的机制
定义由项目组长做
实现由小组成员做
这就是抽象机制的由来
而接口则是在java中实现抽象的最佳途径
还有另一种方法是构造abstract类,没有interface好,因为接口是“纯虚的”
给点分,好吗
所以要有一种“先定义”一个空函数
“后实现”这个函数的机制
定义由项目组长做
实现由小组成员做
这就是抽象机制的由来
而接口则是在java中实现抽象的最佳途径
还有另一种方法是构造abstract类,没有interface好,因为接口是“纯虚的”
给点分,好吗
|
对,最根本的区别有两点:接口是纯虚的,接口可以多继承。
一般在java开发中常用的是interface而不是abstract类,因为java不提供多重继承,所以只能用接口来实现了。
其实接口与C++中的纯虚类很类似了。
|
interface pig{
void eat(){}
}
public class bigpig implements pig{
void eat(){
System.out.println("eat a lot");
}
}
public class littlepig implements pig{
void eat(){
System.out.println("eat little");
}
}
pig myPig ;
myPig = new littlepig(); // line x1
myPig.eat();
myPig = new bigpig(); // line x2
myPig.eat();
-----------------------------------------------
如果我把line x1和line x2交换,一点问题都没有。
如果我们在使用myPig的时候不需要知道myPig具体如何做,岂不是符合oop的思想。
void eat(){}
}
public class bigpig implements pig{
void eat(){
System.out.println("eat a lot");
}
}
public class littlepig implements pig{
void eat(){
System.out.println("eat little");
}
}
pig myPig ;
myPig = new littlepig(); // line x1
myPig.eat();
myPig = new bigpig(); // line x2
myPig.eat();
-----------------------------------------------
如果我把line x1和line x2交换,一点问题都没有。
如果我们在使用myPig的时候不需要知道myPig具体如何做,岂不是符合oop的思想。