`
duoerbasilu
  • 浏览: 1541654 次
文章分类
社区版块
存档分类
最新评论

我所理解的接口和抽象类

 
阅读更多

参考:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html


在实践过程中,抽象类和接口都经常用到。但是,对于什么情况下该用抽象类,什么情况下该用接口,总是有点搞不清楚。

于是,在阅读别人对着两者理解之后,终于对两者的区别有了更进一步的理解。

有关这两者的一些基本区别,可以参考上面的文章。这里我只介绍下对于抽象和接口该在什么情况下使用的理解。

抽象类重点在于对于属性和方法的继承;而接口则重在多个类(可能他们之间毫无联系)对同一种方法或者属性的描述,体现了多态性。


抽象出一个类(类),定义一个抽象方法(判断是否会飞)

1、抽象类

例如:抽象出一个鸟类。对于鸟类,抽象出一个方法。用来判断这种鸟会不会飞。

由于鸟类中的canFly是抽象方法,因此所有继承鸟类的子类都必须实现这个canFly方法。

/**
 * 鸟
 */
public abstract class Bird {

	public abstract boolean canFly();
}

/**
 * 燕子
 * 
 */
public class Swallow extends Bird{

	@Override
	public boolean canFly() {
		// TODO Auto-generated method stub
		return false;
	}


}

/**
 * 猫头鹰
 *
 */
public class Owl extends Bird{

	@Override
	public boolean canFly() {
		// TODO Auto-generated method stub
		return false;
	}

}

假如现在有这种状况。要同时描述鸟类和飞机,它们可以有一个共同的方法来判断是否能飞。但是这个时候,两者肯定是没有继承关系的啦。

你不能指望飞机通过继承鸟类来获得这个canFly的方法。

此时,你就可以把canFly抽象到接口中,然后鸟类和飞机都继承这个接口。

2、接口

public interface IFly {
	public abstract boolean canFly();
}

/**
 * 鸟
 */
public class Bird implements IFly{

	@Override
	public boolean canFly() {
		// TODO Auto-generated method stub
		return false;
	}

}

/**
 * 飞机
 *
 */
public class Airplane implements IFly {

	@Override
	public boolean canFly() {
		// TODO Auto-generated method stub
		return true;
	}

}



分享到:
评论

相关推荐

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    #### 深入理解Java的接口和抽象类 在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被直接实例化,而是位于继承结构的顶层,被其他类实现或继承...

    详细解析Java中抽象类和接口的区别

    综上所述,抽象类和接口在Java中都扮演着重要的角色,但它们有着不同的应用场景和设计考量。选择使用哪种机制取决于具体的问题领域、设计意图以及代码的可维护性需求。理解这些差异并根据实际情况作出选择,可以帮助...

    java中的抽象类和接口的理解

    ### Java中的抽象类和接口的理解 #### 一、引言 在面向对象编程语言Java中,抽象类(Abstract Class)和接口(Interface)是实现多态性和代码复用的重要手段。它们都允许开发者定义行为规范而不需要具体实现细节,...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    通过这些理解,我们可以更好地利用抽象类和接口来设计灵活且可扩展的软件架构。在选择使用抽象类还是接口时,应根据项目需求和设计原则来权衡。例如,如果需要共享部分实现并有继承关系,可以选择抽象类;如果需要多...

    接口和抽象类使用详细实例源代码

    抽象(如抽象类和接口)作为契约,使得模块之间的交互基于稳定的抽象,而不是易变的具体实现。 在实际编程中,接口和抽象类的选择通常取决于特定场景的需求。如果需要为一组有共同行为的类提供基本实现,并且这些类...

    java中接口与抽象类的详细分析与比较

    总结来说,理解和掌握Java中的接口和抽象类是成为一名优秀Java开发者的关键。选择使用哪种方式取决于具体的需求和设计目标,灵活运用它们可以帮助我们编写出更高效、更易于维护的代码。通过阅读"java中接口与抽象类...

    接口和抽象类

    ### 接口与抽象类:理解与应用 在面向对象编程中,接口和抽象类都是实现多态性和代码复用的重要工具,但它们各有特点,适用于不同的场景。本文旨在深入探讨接口与抽象类的区别,以及如何根据具体需求选择合适的工具...

    抽象类和接口

    在编程领域,抽象类和接口是面向对象设计中的两个重要概念,它们用于实现代码的抽象和多态性。本实验旨在帮助你深入理解和熟练运用这两种机制。 首先,让我们来看看抽象类。抽象类是一种不能被实例化的类,它通常...

    抽象类和接口的区别

    在面向对象编程中,抽象类和接口是两种非常重要的概念,它们在软件设计和实现过程中发挥着不可替代的作用。本文将深入探讨这两种概念的区别,帮助开发者更好地理解和运用它们。 #### 一、定义 1. **抽象类**:抽象...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...

    面向对象和抽象类和接口的理解

    理解面向对象、抽象类和接口的概念,并熟练运用它们,对于编写可维护、可扩展的代码至关重要。在实际项目开发中,合理地使用这些概念可以帮助我们更好地组织代码结构,提高代码的复用性和灵活性。

    接口抽象类

    本文将深入探讨“接口抽象类”的主题,包括它们的概念、用途、区别以及在Java编程语言中的实现。 首先,让我们了解什么是接口。接口在Java中是一种完全抽象的类型,它只包含方法签名(方法名、返回类型和参数列表)...

    java 抽象类与接口的区别

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们都用于实现多态性,但各自具有不同的特点和应用场景。了解并熟练掌握它们的区别对于编写高质量的Java代码至关重要。 首先,抽象类是一种不能被...

    介绍一下抽象类和接口的异同

    在编程世界中,抽象类和接口是两种非常重要的概念,它们在实现代码的组织和设计模式上发挥着关键作用。本文将深入探讨抽象类与接口的异同,并结合实际应用场景来帮助理解这两种机制。 首先,让我们从定义开始。抽象...

    C#抽象类与接口方法

    【C#抽象类与接口方法】在C#编程语言中,抽象类和接口是两种用于实现多态性和封装的关键概念,它们允许我们设计灵活、可扩展的代码结构。 抽象类是一种特殊的类,它不能被实例化,而是作为其他类的基类使用。抽象类...

    c# 中抽象类和接口的学习

    在C#编程语言中,抽象类和接口是实现面向对象编程(OOP)中的多态性和代码重用的关键概念。本文将深入探讨这两个概念,并解释它们在C#中的使用方式和区别。 ### 抽象类 抽象类是一种特殊的类,它不能被实例化,其...

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java 接口和抽象类区别

    Java接口和抽象类是两种重要的面向对象编程概念,它们在软件设计中扮演着关键角色,主要用来实现多态性和代码的可扩展性。虽然两者都用于定义类的行为,但它们之间存在着显著的区别。 首先,接口是一种完全抽象的...

Global site tag (gtag.js) - Google Analytics