当前位置: 技术问答>java相关
请问class,abstract class,interface的区别和联系.
来源: 互联网 发布时间:2015-09-21
本文导语: 请问class,abstract class,interface的区别和联系. 麻烦说详细点,最好有简单的例子. | abstruct class与class的区别在于前者不能用new进行实例化。一般在该类内部都存在一些抽象方法(即只给出定义而...
请问class,abstract class,interface的区别和联系.
麻烦说详细点,最好有简单的例子.
麻烦说详细点,最好有简单的例子.
|
abstruct class与class的区别在于前者不能用new进行实例化。一般在该类内部都存在一些抽象方法(即只给出定义而没有具体实现)。需要继承的子类或超类实现其方法。
interface可以认为是“纯”的abstruct class.区别在于前者在实现接口时必须实现所有接口方法。而后者只须实现声明为abstruct的方法。
抽象方法:只含声明,没有主体。 如 abstruct void x();
示例:
class OriCs { void x(){}}
abstruct class AbsCs { abstruct void y();}
interface JieKou { void z(); }
interface可以认为是“纯”的abstruct class.区别在于前者在实现接口时必须实现所有接口方法。而后者只须实现声明为abstruct的方法。
抽象方法:只含声明,没有主体。 如 abstruct void x();
示例:
class OriCs { void x(){}}
abstruct class AbsCs { abstruct void y();}
interface JieKou { void z(); }
|
以上3者的差别主要在于method的实现上面
定义为class的方法一定都要实现,不能有一个或多个方法只有method定义而没有实现。
定义为abstract class的类,可以有一个或多个方法定义,不用实现,甚至可以都不实现,当然都实现也没问题。注意:只有方法定义的method前面一定要加上abstract关键字,有abstract method的类一定要声明为abstract class
interface的所有的方法都只要定义而不用实现,所有的方法实现都在子类中实现。interface主要用于多重继承,让一个类可以拥有多种特性。
例如:
class A extends Canvas implements Runnable
{
......
}
class A继承了Canvas,可以用来画图,也有Thread的特性,可以起另一个线程来载入图片。
不知道这样的回答,你是否满意。
定义为class的方法一定都要实现,不能有一个或多个方法只有method定义而没有实现。
定义为abstract class的类,可以有一个或多个方法定义,不用实现,甚至可以都不实现,当然都实现也没问题。注意:只有方法定义的method前面一定要加上abstract关键字,有abstract method的类一定要声明为abstract class
interface的所有的方法都只要定义而不用实现,所有的方法实现都在子类中实现。interface主要用于多重继承,让一个类可以拥有多种特性。
例如:
class A extends Canvas implements Runnable
{
......
}
class A继承了Canvas,可以用来画图,也有Thread的特性,可以起另一个线程来载入图片。
不知道这样的回答,你是否满意。
|
各位都在讲实践,没人讲理论嘛。。。
class,abstract class,interface这三个东西的区别不仅仅在这些外部特征上。class是对实际问题的映射;interface则是对于可接受的消息的定义。所以每一个object has an interface。
abstract的意思,更多的是“抽象”。即使全部的方法都不是abstract,也可以定义abstract class。它的意义在于对实际问题更高层的抽象,说白了,就是做“不存在”的基类。就象“动物”这样的类,一般都是abstract的,因为世界上没有“动物”这个东西,只有属于“动物”这个类型的东西。
很拗口哦。这些理论书上有讲,不过想真正理解,
1。大量的实践+悟性
2。英文要好
thinking in java的中英文版区别很大,就像所有的书一样。
class,abstract class,interface这三个东西的区别不仅仅在这些外部特征上。class是对实际问题的映射;interface则是对于可接受的消息的定义。所以每一个object has an interface。
abstract的意思,更多的是“抽象”。即使全部的方法都不是abstract,也可以定义abstract class。它的意义在于对实际问题更高层的抽象,说白了,就是做“不存在”的基类。就象“动物”这样的类,一般都是abstract的,因为世界上没有“动物”这个东西,只有属于“动物”这个类型的东西。
很拗口哦。这些理论书上有讲,不过想真正理解,
1。大量的实践+悟性
2。英文要好
thinking in java的中英文版区别很大,就像所有的书一样。
|
TIJ里面建议能用Interface尽可能用Interface,你想在Java里面只有单继承,这个权利可是要谨慎利用的,Interface是无所谓的有多少都行。这个做法比较理论化的说法是,可以更好的保持一个层次结构。呵呵。
楼上有些人闲问题浅显,那就在你设计时,什么时候定义为abstract,什么时候定义为Interface;如果要实现一种“继承”关系时,两种都可选,你是选择实现Interface,还是选择继承类呢?
说实际点,别老是看了书,知道了有这么回事就在这评论。
楼上有些人闲问题浅显,那就在你设计时,什么时候定义为abstract,什么时候定义为Interface;如果要实现一种“继承”关系时,两种都可选,你是选择实现Interface,还是选择继承类呢?
说实际点,别老是看了书,知道了有这么回事就在这评论。
|
你不能直接用一个abstract 类的方法,你必须继承这个abstract class ,
当一个类中的方法暂时还没有方法体的时候,最好吧他定义为abstarct class,
当一个类中的方法暂时还没有方法体的时候,最好吧他定义为abstarct class,