我觉得你没有坚持看完:Interface:接口
Abstract Class:抽象类
Class:类,包括抽象类。
学 Java 的人,或学 OO 编程的人,都是要弄清楚这两个概念的区别。
现将我的观点说一下。
在OO中,Interface 和Abstract Class 是两个不同的概念。
1。Abstract Class类似于 Abstract Data Type(抽象数据类型),它定义了它所有的subclass(子类)应该有的特性,就是在Abstract Class 中声明方法和变量。如定义一种抽象类型:车。那么在Java中,就要在class或method上加上 abstract。举个例:
public abstract class 车
{
public int 轮子;
public abstract void 移动();
}
这个抽象类就声明了所有的车应有的特征(如轮子)和行为(如移动)。之后你就可以扩展(extend)这个抽象类,只要是车,就可以,还有你可以在子类(subclass)中加入自己的特征,如
public class 跑车 extends 车
{
public void 移动()
{
System.out.println("我在移动");
}
public void 引擎类型() //属于自己(跑车)的行为
{
System.out.println("高级引擎");
}
轮子=4;
}
public class 自行车 extends 车
{
public void 移动()
{
System.out.println("我在移动");
}
public void 爆胎() //属于自己(自行车)的行为
{
System.out.println("我走不动了");
}
轮子=2;
}
2。Interface 则用来定义一个协议,所有的方法都可以实现它。一个Interface定义了方法,和最终静态(final static)变量,所有实现这个Interface的都要保证实现的东西与这个Interface 定义的行为一致。使用Interface可以让Object(对象)在一定的规范下沟通。
如
public interface TCP协议
{
public void 打开端口();
public void 关闭端口();
}
这样的话,只要实现这个Interface的都可以使用这两个方法交流。
在 Java平台里,它们主要有3个不同点:
1。一个类(Class)只能继承一个超类(Super class),但是可以实现多个Interface。
2。在Abstract Class内,你可以有不抽象(Abstract)的方法,即有意义的方法,但Interface不行。
如
public abstract class 车
{
public int 轮子;
public abstract void 移动();
public String 我是什么()
{
return "车子";
}
}
3。Interface不属于 继承范围。即不可能成为超类(Super Class)
Abstract Class:抽象类
Class:类,包括抽象类。
学 Java 的人,或学 OO 编程的人,都是要弄清楚这两个概念的区别。
现将我的观点说一下。
在OO中,Interface 和Abstract Class 是两个不同的概念。
1。Abstract Class类似于 Abstract Data Type(抽象数据类型),它定义了它所有的subclass(子类)应该有的特性,就是在Abstract Class 中声明方法和变量。如定义一种抽象类型:车。那么在Java中,就要在class或method上加上 abstract。举个例:
public abstract class 车
{
public int 轮子;
public abstract void 移动();
}
这个抽象类就声明了所有的车应有的特征(如轮子)和行为(如移动)。之后你就可以扩展(extend)这个抽象类,只要是车,就可以,还有你可以在子类(subclass)中加入自己的特征,如
public class 跑车 extends 车
{
public void 移动()
{
System.out.println("我在移动");
}
public void 引擎类型() //属于自己(跑车)的行为
{
System.out.println("高级引擎");
}
轮子=4;
}
public class 自行车 extends 车
{
public void 移动()
{
System.out.println("我在移动");
}
public void 爆胎() //属于自己(自行车)的行为
{
System.out.println("我走不动了");
}
轮子=2;
}
2。Interface 则用来定义一个协议,所有的方法都可以实现它。一个Interface定义了方法,和最终静态(final static)变量,所有实现这个Interface的都要保证实现的东西与这个Interface 定义的行为一致。使用Interface可以让Object(对象)在一定的规范下沟通。
如
public interface TCP协议
{
public void 打开端口();
public void 关闭端口();
}
这样的话,只要实现这个Interface的都可以使用这两个方法交流。
在 Java平台里,它们主要有3个不同点:
1。一个类(Class)只能继承一个超类(Super class),但是可以实现多个Interface。
2。在Abstract Class内,你可以有不抽象(Abstract)的方法,即有意义的方法,但Interface不行。
如
public abstract class 车
{
public int 轮子;
public abstract void 移动();
public String 我是什么()
{
return "车子";
}
}
3。Interface不属于 继承范围。即不可能成为超类(Super Class)
解决方案 »
- 急求!webservice接口实现存储下载接口
- Flex+Spring配置,destination 未定义
- net.sf.jasperreports.engine.JRException: Error loading object from file
- eclipse中用过ext的请进?
- HSQLDB的编译问题,org.hsqldb.jdbc这个包的类没有实现相关接口。谢谢大家。!!!!!!!
- 这种实例化的理解?
- 关于数据库连接池的问题
- 新手怎么上路?
- Linux下的Eclipse要在图形界面进入系统才能启动吗?
- ssh在maven下整合报org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
- XML 删除节点增加节点出错!
- 请问JFreeChart 柱状图 怎么让同一图例内的柱子都有不同的颜色?
org.apache.commons.logging.Log 这个接口定义的时候给的是一个抽象接口。
与普通的接口有什么区别呢?
public abstract interface Log { // Methods
boolean isDebugEnabled();
boolean isErrorEnabled();
boolean isFatalEnabled();
boolean isInfoEnabled();
boolean isTraceEnabled();
boolean isWarnEnabled();
void trace(Object object);
void trace(Object object, Throwable throwable);
void debug(Object object);
void debug(Object object, Throwable throwable);
void info(Object object);
void info(Object object, Throwable throwable);
void warn(Object object);
void warn(Object object, Throwable throwable);
void error(Object object);
void error(Object object, Throwable throwable);
void fatal(Object object);
void fatal(Object object, Throwable throwable);
}
楼上的说你看到org.apache.commons.loggin.Log的定义,呵呵,你自己去建一个接口,然后把class打包成jar文件,在eclipse里面加入构建路径,然后打开这个class看看?你的interface也被加上了abstract修饰。
“ Class和Class之间是extends
Interface和Interface之间是extends
Class和Interface之间是implements
Interface和abstract Interface之间仅仅只能被你自己定义的接口extends,不可能implements, implements是Class和Interface之间的"专利"
一句话 就是 abstract interface 只能被interface继承,不能直接被类实现 ”
下面我要更正一点:其实,abstract interface 不单单能被interface继承,也能直接被类实现
读多几遍◎◎J2EE技术交流群:9438177
帮助第一,互相交流,大家帮助大家!共同进步!记住:分享与贡献同等重要!
“ the abstract keyword, which allows you to create one or more methods in a class that have no definitions
—you provide part of the interface without providing a corresponding implementation, which is created by inheritors.
The interface keyword produces a completely abstract class, one that provides no implementation at all.”
所以结论就是 abstract interface 就是interface,两者根本没有区别。
}public class TCPWebSocket implements WebSocket {
@Override
public void connect(String url) {
try {
if (crtstate != ReadyState.CLOSED) {
this.close();
} this.connectTo(new URI(url));
} catch (Exception ex) {
this.handleException(ex);
} }
}蝴蝶兰 说的好像有问题。
我觉得你似乎没有看清楚楼主的问题,问题是interface和abstract interface的区别,而不是interface和abstract class的区别。