抽象类和接口

一、抽象类

1、需求:定义一个图形类,该类应该包含求周长和面积的方法。

2、分析:图形包括很多种,如长方形,正方形,圆形等,各种图形均继承与图形这个父类,但是不同图形求周长、求面积的方法也不尽相同,换句话说

      “方法的声明相同,但是方法的具体实现各异”。此时只能抽取方法的声明,并不能抽取方法的实现。


3、抽象类、抽象方法定义:

  抽象方法定义: public abstract 返回值类型  方法名(参数);

  抽象类定义: public abstract 类名{...}

/**
 * 图形定义
 * @author Administrator
 *
 */
public abstract class Graph {
    
    /**
     *     图形名称
     */
    private String graphName;
    
    /**
     *     获取图形周长
     * @return
     */
    public abstract double getPerimeter();
    
    /**
     * 获取图形面积
     * @return
     */
    public abstract double getArea();

    /**
     * 获取图形名称
     * @return
     */
    public String getGraphName() {
        return graphName;
    }

    
    
}

 

  注:1)包含抽象方法的类也必须是抽象的。2)抽象类中可以包含抽象方法(getGraphName())。3)不能使用抽象类直接生产对象,必须由子类继承抽象类后覆盖其抽象方法后才能生成对象。

    4)抽象类的意义:体现面向对象编程的编程思想。

 

二、接口

  1、定义格式

    

public interface Graph {
    
    /**
     *     定义常量
     */
    public static final double constant1 = 3.14;
    
    
    /**
     * 获取周长
     * @return
     */
    public abstract double getPerimeter();
    /**
     * 获取面积
     * @return
     */
    public abstract double getArea();
}

注:1)接口中的方法均为公共抽象方法。2)接口中无法定义普通的成员变量。3)接口中常量必须使用 public static final修饰。

  4)接口不可以创建对象。5)子类覆盖接口的所有方法后才能够创建对象,否则子类只是一个抽象类。

  6)接口之间可以存在多继承的关系。

 

  2、接口的意义:

    1)接口最重要的意义是作为多继承的替代方案:多继承会出现方法调用可能存在歧义的问题,但是多实现却没有。

    2)面向接口编程使程序解耦,便于后期开发和维护。

 

 

三、抽象类和接口的区别:

  1、抽象类是现实事物的抽象,只不过抽象的过程中某些方法的行为无法具像。

  2、接口更多是表示功能的集合,实现接口的子类只是应该具有接口的功能。

 

posted @ 2018-12-24 10:13  XiaoBBai  阅读(204)  评论(0编辑  收藏  举报