1楼:匿名用户
java中对的抽象类和接口对的区别:
抽象类:
抽象类内允许有普通变量和普通方法;
抽象类必须有abstract关键字;
抽象类内可以没有抽象方法,但不能实例化;
抽象类内有抽象方法的一定是抽象类;
抽象类不能被实例化,但是有构造方法(派生类可以扩展)。
接口:接口只声明,没有方法体,如:public abstract void func();
接口内定义的变量都默认是public static final ,必须被显示初始化;
接口没有构造方法,不能实例化;
实现接口的类要实现所有的抽象方法,否则该类就必须声明为抽象类,加上 abstract关键字;
.接口不可以实现接口,所有接口都是抽象方法,但是接口支持多继承。
java中抽象类和接口的区别?
2楼:靠名真tm难起
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。
接口只是一种形式,接口自身不能做任何事情。
3楼:匿名用户
简单来说,
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如remote接口)和数据共享(里面的变量全是常量)的作用.
4楼:仲维传媒
“抽象类”和“接口”的区别如下:
1) 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高**的复用性,这是抽象类的优势;接口中只能有抽象的方法。
2) 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。
图中如果sparrow继承类bird 类 ,boyin继承airplane类,sparrow 和boyin想使用同样的flay方法那么是没有办法实现的,因为类的继承是单继承。
如果bird和airplane是接口那么boyin想使用同样的flay方法就很简单了。在写一个接口让sparrow和boyin实现这个接口就可以了如下图:
5楼:匿名用户
抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。
动物类要有呼吸方法。怎么呼吸就是子类的事了。
现在有很多讨论和建议提倡用inte***ce代替abstract类,两者从理论上可以做一般性的混用,但是在实际应用中,他们还是有一定区别的。抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,就像java王子所说的事件中的适配器就是一个很好的应用。
用一个简单的例子,比如说一个教师,我们把它作为一个抽象类,有自己的属性,比如说年龄,教育程度,教师编号等等,而教师也是分很多种类的,我们就可以继承教师类而扩展特有的种类属性,而普遍属性已经直接继承了下来。
而接口呢~还是拿教师做例子,教师的行为很多,除了和普通人相同的以外,还有职业相关的行为,比如改考卷,讲课等等,我们把这些行为定义成无body的方法,作为一个集合,它是一个inte***ce。而教师张三李四的各自行为特点又有不同,那么他们就可以扩展自己的行为body。从这点意义上来说, inte***ce偏重于行为。
总之,在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。
6楼:手机用户
因为java是单根继承的,所以能用接口尽量用接口,c++的接口就是通过抽象类实现的
java抽象类和接口的区别?
7楼:小童鞋_成
您好,提问者:
1、抽象类:
如果这个类里面的方法有一个是抽象的,那么这个类必须是抽象的。
抽象类中的方法,子类必须实现。
抽象类中可以有变量,可以有方法体的方法。
2、接口:
接口中方法都默认是public 的,不能有方法体。
接口中的变量都常量,都是public static final 的,必须先赋值。
如果一个类实现了此接口,必须覆盖接口中的所有抽象方法。
8楼:吃饱饱心情好好
1、抽象类里面可以有非抽象方法
但接口里只能有抽象方法
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。
不能有抽像构造函数或抽像静态方法。abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
2、接口(inte***ce)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
java中接口和抽象类的区别是什么
9楼:匿名用户
1、抽象类是类,它的子类
10楼:暗处灯
定义的关键字:abstract class;inte***ce;
组成:常量,变量,抽象方法,普通方法,构造方法;全局常量,抽象方法;
权限:可以是各种权限;只能是public;
关系:抽象类可以实现多个接口;接口不能实现抽象类;
使用:子类利用extends;子类利用implements实现接口;
涉及的设计模式:模板设计模式;工厂,**设计模式;
局限性:一个子类只能继承一个抽象类;一个子类可以继承多个接口;
如果抽象类和接口都能实现的操作,一般选择接口,因为可以避免单继承局限;
11楼:亘古也匆匆
1、接口可以多重继承,抽象类只能单继承
2、类实现(implements)某一接口必须实现该接口的所有方法,一个类实现(extends)一个抽象类 则可以根据需要有选择的实现需要的方法
3、接口是一种标准,
12楼:匿名用户
你可以把接口看成一种抽象类 最大的不同就在于接口能多重继承 类只能单继承
13楼:匿名用户
接口 定义方法,抽象类实现方法
14楼:匿名用户
其实差别并不大,抽象类和接口中的方法都需要子类或实现类去覆写(当然抽象类中的方法也可以交给子类的子类去覆写)。由于java只能单继承,所以出现了接口,它们都能很好的为“多态”服务,但使用接口编程能更好的实现解耦。
java中抽象类和接口的区别
15楼:青鸟中关村专家
一个类可以有多个接口 只能有继承一个父类
抽象类可以有构造方法,接口中不能有构造方法。
抽象类中可以有普通成员变量,接口中没有普通成员变量接口里边全部方法都必须是abstract的 抽象类的可以有实现了的方法
抽象类中的抽象方法的访问类型可以是public,protected 但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型
抽象类中可以包含静态方法,接口中不能包含静态方法抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
16楼:育知同创教育
1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。
2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的。
3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量。
4.接口的方法都是public的,抽象类的方法可以是public,protected,private或者默认的package;
5.抽象类可以定义构造函数,接口却不能。
java中抽象类和接口有什么区别
17楼:大仙儿不是仙女
抽象类抽象类是用来捕捉
子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
接口接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。
接口只是一种形式,接口自身不能做任何事情。
18楼:691归52划
抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。
接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。
抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。
19楼:廖实藤鸟
抽象类是用来捕捉子类的通用特性的
。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。
接口只是一种形式,接口自身不能做任何事情。
扩展资料:
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
通常在编程语句中用
abstract
修饰的类是抽象类。在c++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
参考资料:抽象类搜狗百科接口搜狗百科
20楼:嬴越柯鹏
他们讲的太繁琐了,
简单来说在接口里面定义的方法必须全部是
抽象方法,而
抽象类里面不知能定义抽象方法也可以定义实例方法。
PHP接口和抽象类的区别,php抽象类和接口的区别
1楼 匿名用户 抽象类 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。 接口 接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。 接口只...
php什么情况用接口和抽象类,java中为什么要用抽象类和接口
1楼 育知同创教育 php 用接口和抽象类的情况 接口是一种协定,抽象类则相当于类模板。 使用抽象类,而不要使用接口来分离协定与实现。 如果需要提供多态层次结构的值类型,使用接口。 如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。 虽然抽象类和接口都支持将协定与实现分离开来,但接口不...