码迷,mamicode.com
首页 > 其他好文 > 详细

第10章 接口、继承与多态 抽象类和接口

时间:2015-06-03 11:41:56      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

一、抽象类

  在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。回想继承和多态原理,继承树中越是在上方的类越抽象,如:鸽子类继承鸟类、鸟类继承动物类等。在多态机制中,并不需要将父类初始化对象,我们需要的只是子类对象,所以在Java语言中设置抽象类不可以实例化对象,因为图形类不能抽象出任何一种具体图像,但它的子类却可以。

  抽象类的语法如下:使用abstract关键字定义的类称为抽象类,而使用这个关键字定义的方法称为抽象方法,抽象方法没有方法体,这个方法本身没有任何意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承之外没有任何意义。

  只要类中有一个抽象方法,此类就被标记为抽象类

public abstract class Test{
    abstract void testAbstract(); //定义抽象方法
}

  技术分享

  从图中可以看出,继承抽象类的所有子类需要将抽象类中的抽象方法进行覆盖。

  这样在多态机制中,就可以将父类定义为抽象类,将draw()方法设置为抽象方法,然后每个子类都重写这个方法来处理。

  但这会导致程序中会有太多冗余的代码,同时这样的父类局限性很大,也许某个不需要draw()方法的子类也不得不重写draw()方法。

  如果将draw方法放置在另外一个类(下面介绍的接口)中,这样让那些需要draw()方法的类继承该类,而不需要draw()方法的类继承图形类,但所有的子类都需要图形类,因为这些类是从图形类中被导出的,同时某些类还需要draw()方法,但是在Java中规定,类不能继承多个父类,面临这种问题,接口的概念便出现了。

二、接口

  接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中所有方法都没有方法体。上面遇到的问题,可以将draw()方法封装到一个接口中,使需要draw()方法的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。

  技术分享

  接口使用interface关键字进行定义,其语法如下:

public interface drawTest{
    void draw();//接口内的方法,省略abstract关键字
}
备注:在接口中定义方法必须被定义public或abstract形式,其他修饰权限不被Java编译器认可,即使不讲该方法声明为public形式,它也是public
   在接口中定义的任何字段都自动是static和final的

  一个类实现一个接口可以使用implements关键字,代码如下:

public class Parallelogram extends Quadrangle implements drawTest{    
    ...//
}

 

第10章 接口、继承与多态 抽象类和接口

标签:

原文地址:http://www.cnblogs.com/chamie/p/4548608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!