什么是抽象类?什么是接口?接口和抽象类的区别在哪里?怎样去理解它们呢?

1、这里我们来参考一下博文。

http://blog.csdn.net/fenglibing/article/details/2745123

接口和抽象类有什么区别

你选择使用接口和抽象类的依据是什么?

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。

比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的

所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

2、我个人对接口和抽象类的理解 代码上来。

这里我首先定义两个接口,Interface1

package com.yuan.test;
public interface Interface1 {
 public void abc();
}
package com.yuan.test;

public interface Interface3 {
 public void abcde();
}
package com.yuan.test;

public interface Interface2 extends Interface1,Interface3 {
public void abcd();
}

说明:

从Interface2可以看出,接口可以继承多个接口。也就是接口可以多继承。

时间: 2024-10-09 10:07:45

什么是抽象类?什么是接口?接口和抽象类的区别在哪里?怎样去理解它们呢?的相关文章

接口中包含抽象类demo

package jiechoudemo; /* * 接口中包含抽象类 */ public class jiechoudemo { public static void main(String[] args) { windows.door wd = new zhuozi().new yizi(); wd.close(); } } //写一个接口 interface windows{ public abstract void open(); //抽象类 abstract class door{ pu

一个接口能否继承另一个接口?一个抽象类能否实现一个接口?

都可以: 一.一个接口能否继承另一个接口? 接口继承接口  本质就是一个抽象类继承另一个抽象类(它们都没写方法的实例).当一个类继承了一个抽象类,它必须要重写父类 抽象类中的抽象方法,如果不去重写父类抽象方法的实例,那么这个类也是抽象类(这个抽象子类,直到重写这个抽象方法的实例为止, 才能摆脱抽象的命运).其实我们想想,一个类去实现一个接口也不就是一个实体子类把一个抽象的所以抽象方法实例化(重写了 抽象父类 中全部抽象方法),当然抽象类和接口还是有区别的.我上上篇就写到了抽象类和接口的区别,有兴

抽象类实现多个接口与接口的继承的对比,实现良好的设计模式!

//少说废话,上代码: import java.util.*; interface Instrument { static final int i = 2; void tune(); } //测试多个接口的测试 interface Chord { void shake(); } interface RockCase { void cover(); } //利用抽象类的情况: abstract class Sum implements Chord, RockCase, Instrument { a

接口Interface和抽象类abstract class的区别

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意. 其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.

jdk1.8.0_45源码解读——Set接口和AbstractSet抽象类的实现

jdk1.8.0_45源码解读——Set接口和AbstractSet抽象类的实现 一. Set架构 如上图: (01) Set 是继承于Collection的接口.它是一个不允许有重复元素的集合.(02) AbstractSet 是一个抽象类,它继承于AbstractCollection.AbstractCollection实现了Set中的绝大部分函数,为Set的实现类提供了便利.(03) HastSet 和 TreeSet 是Set的两个实现类.        HashSet依赖于HashMa

Java简明教程 09. 抽象类(abstract class)和接口(interface)

抽象类(abstract class) 描述抽象的事物,  比如人类(human), 就是一个抽象类. 对于人类这个抽象类, 具体的就是某一个人, 比如张三(男)啊, 小红(女)啊,虽然说人都会eat, 可是男人和女人的eat似乎又是不一样的.男人一般都是大口大口的吃, 而女人比较慢条斯理. AbstractDemo.java 1 abstract class Human { //抽象类, 特点: 1. 前面有abstract修饰 2 // 2. 无法直接生成一个对象,需要子类去继承这个类, 并

Java中抽象类、接口、父类直接的区别与联系

1.抽象类与接口的区别: (1)抽象类是一个只有变量或方法申明的类,这些变量(属性)和方法都是抽象类型的.抽象类没有对方法的实现. (2)接口则是一个只有方法申明.没有方法的实现,接口的方法也同样是抽象方法,与抽象类不同的:接口只能定义static final成员变量. 2.抽象类与接口的共同点: 抽象类与接口的方法实现都是在继承的(子类)或者是实现接口的类中实现的. 2.抽象类与父类的区别: (1)抽象类与父类不同的地方在于:抽象类只能对属性或者方法的申明,不能对其实现.而继承这个类的子类一定

PHP接口(interface)和抽象类(abstract)

interface 定义了一个接口类,它里面的方法其子类必须实现.接口是类的一个模板,其子类必须实现接口中定义的所有方法. interface User{ function getHeight($height); function getWeight($weight); } class my implements User{ function getHeight($username){ echo $height; } function getWeight($weight){ echo $weig

使用接口还是使用抽象类

很多人有过这样的疑问:为什么有的地方必须使用接口而不是抽象类,而在另一些地方,又必须使用抽象类而不是接口呢?或者说,在考虑Java类的一般化问题时,很多人会在接口和抽象类之间犹豫不决,甚至随便选择一种. 首先来了解一下接口和抽象类的一些具体的区别: 抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节. 类描述了一个实体,包括实体的状态,也包括实体可能发出的动作. 接口定义了一个实体可能发出的动作.但是只是定义了这些动

Java基础知识强化18:抽象类、接口的区别 和 抽象类可以不实现接口的全部方法

抽象类和接口的区别 抽象类里面可以有非抽象的方法,接口里只能有抽象方法. 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号.  抽象类(abstract class): a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类. b.抽象类的主要特征在于它包含抽象成员(abstract member),抽象成员是不具有实现的一个方法或属性,其作用是强制所有派生类提供实现. c.由于抽象成员应当是要被重写(override)的,因此这类成员会自动成为virtual