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

我所理解的接口和抽象类

 
阅读更多

参考: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中抽象类和接口的区别

    抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...

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

    java中的抽象类和接口的理解及abstract的使用方法!

    抽象类和接口

    1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。

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

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

    Java中抽象类和接口的区别

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

    接口和抽象类

    加深对接口和抽象类的理解

    深入理解Java的接口和抽象类

    在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。我们一起来学习一下Java中的接口和抽象...

    关于接口和抽象类的案例

    接口的详细解答,没有比这个更好的了,通过它你可以更好的理解面向对象的思维.

    java抽象类与接口区别

    深入浅出的说明java抽象类与接口区别,让初学者更好的理解java抽象类与接口的概念

    Python如何定义接口和抽象类

    主要介绍了Python如何定义接口和抽象类,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    java学习资料抽象类,接口,内部类

    学习java技术的基础方面的知识,有利于更加好的理解 ,抽象类,接口,内部类

    Java的接口和抽象类深入理解

    主要介绍了Java的接口和抽象类深入理解的相关资料,希望通过本文大家能够理解应用接口与抽象类的使用方法,需要的朋友可以参考下

    6接口,虚方法,内部类,异常.rar

    要理解接口和抽象类的选择原则,有两个概念很重要:对象的行为和对象的实现。如果一个实体可以有多种实现方式,则在设计实体行为的描述方式时,应当达到这样一个目标:在使用实体的时候,无需详细了解实体行为的...

    浅谈Java抽象类和接口的个人理解

    主要介绍了浅谈Java抽象类和接口的个人理解,具有一定借鉴价值,需要的朋友可以参考下。

    Java抽象类高难度面试题及解析

    您将了解抽象类与接口的区别、抽象类的实例化、构造函数和成员方法的使用、抽象类与其他类和抽象类的继承关系、抽象类的修饰符和限制规则等。此外,我们还讨论了抽象类与接口的结合应用、抽象类的静态方法和内部类、...

    如何理解Java抽象类和接口

    在面试中我们经常被问到:Java中抽象类和接口的区别是什么?  然后,我们大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,好像把标准答案...

    JAVA中抽象类与接口的区别

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

    PHP抽象类与接口的区别详解

    对于面向对象开发,抽象类与接口这两个东西是比较难理解的;就算是对于有一定经验的程序员来说也如此。下面根据自己的理解来讲述一下这两个东西,如有什么不对的,还望不吝赐教。 抽象类:是基于类来说,其本身就是...

    深入理解Java的接口与抽象类

    本文主要介绍java 的接口和抽象类,对接口和抽象类进行介绍对比,深入理解,有需要的小伙伴可以参考下

    实验项目C、面向抽象和面向接口编程

    3.抽象类和抽象方法 4.继承机制实现的多态 ★专题:接口基础和面向接口编程★ 1.接口基础 2.接口机制的多态基础 3.面向接口编程 4.匿名类 5.[选做]函数式接口和lambda表达式 三、实验结论和思考 1、问题:开发一个...

Global site tag (gtag.js) - Google Analytics