参考: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语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
java中的抽象类和接口的理解及abstract的使用方法!
1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。
面向对象和抽象类和接口的理解 面向对象和抽象类和接口的理解 面向对象和抽象类和接口的理解
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
加深对接口和抽象类的理解
在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。我们一起来学习一下Java中的接口和抽象...
接口的详细解答,没有比这个更好的了,通过它你可以更好的理解面向对象的思维.
深入浅出的说明java抽象类与接口区别,让初学者更好的理解java抽象类与接口的概念
主要介绍了Python如何定义接口和抽象类,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
学习java技术的基础方面的知识,有利于更加好的理解 ,抽象类,接口,内部类
主要介绍了Java的接口和抽象类深入理解的相关资料,希望通过本文大家能够理解应用接口与抽象类的使用方法,需要的朋友可以参考下
要理解接口和抽象类的选择原则,有两个概念很重要:对象的行为和对象的实现。如果一个实体可以有多种实现方式,则在设计实体行为的描述方式时,应当达到这样一个目标:在使用实体的时候,无需详细了解实体行为的...
主要介绍了浅谈Java抽象类和接口的个人理解,具有一定借鉴价值,需要的朋友可以参考下。
您将了解抽象类与接口的区别、抽象类的实例化、构造函数和成员方法的使用、抽象类与其他类和抽象类的继承关系、抽象类的修饰符和限制规则等。此外,我们还讨论了抽象类与接口的结合应用、抽象类的静态方法和内部类、...
在面试中我们经常被问到:Java中抽象类和接口的区别是什么? 然后,我们大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,好像把标准答案...
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性...
对于面向对象开发,抽象类与接口这两个东西是比较难理解的;就算是对于有一定经验的程序员来说也如此。下面根据自己的理解来讲述一下这两个东西,如有什么不对的,还望不吝赐教。 抽象类:是基于类来说,其本身就是...
本文主要介绍java 的接口和抽象类,对接口和抽象类进行介绍对比,深入理解,有需要的小伙伴可以参考下
3.抽象类和抽象方法 4.继承机制实现的多态 ★专题:接口基础和面向接口编程★ 1.接口基础 2.接口机制的多态基础 3.面向接口编程 4.匿名类 5.[选做]函数式接口和lambda表达式 三、实验结论和思考 1、问题:开发一个...