zoukankan      html  css  js  c++  java
  • java面向对象_抽象类和接口

    一、抽象类

      1.抽象方法:由abstract修饰、只有定义没有方法体、用一个分号结尾。

      2.抽象类:

        1)包含抽象方法的类必须是抽象类

        2)由abstract修饰

        3)不能被实例化

        4)抽象类如果不被继承,就没有什么意义;一个类继承抽象类,必须重写起抽象方法(除非该类也声明为抽象类)

    1 abstract class Shape{  //声明抽象类
    2     private double c;
    3     public Shape(double c){
    4         this.c = c;
    5     }    
    6     public abstract double area();  //抽象方法
    7 }

      3.抽象类的意义

        3.1)父类的意义

          3.1.1)封装所有子类共有的数据和行为

          3.1.2)位所有子类提供一个公共类型

        3.2)包含抽象方法

          为所有子类提供了统一的入口

    二、接口

      1)这是一个标准、一个规范;实现了接口就能干某事

      2)只能包含常量和抽象方法

      3)由interface修饰

      4)接口不能被实例化

      5)接口是需要被实现/继承的,实现类/子类,必须重写接口中的所有抽象方法。

    1 interface Inter1{
    2     void a();
    3     void b();//默认为public abstract修饰
    4 }
    5 
    6 class Aoo implement Inter1{   //实现
    7     public void a(){...}
    8     public void b(){...}
    9 }

      6)一个类可以实现多个接口,用逗号隔开;可以又继承又实现,但是要先继承再实现。

      7)接口间可以继承

    三、抽象类与接口的区别

      1、成员区别

        (1)抽象类:可以包含——变量、常量;抽象方法、非抽象方法

        (2)接口:只能包含常量、抽象方法

      2、关系区别

        (1)类与类

            继承为单继承

        (2)类与接口

            实现:单实现、多实现

        (3)接口与接口

            继承为 单继承、多继承

       3、设计理念区别

        (1)抽象类:被继承体现的是“is a”的关系。抽象类中定义的是该继承体系共性功能。

        (2)接口:被实现体现的是“like a”的关系。接口中定义的是该继承体系扩展功能。

  • 相关阅读:
    BZOJ BLO 1123 (割点)【双连通】
    P4291 [HAOI2008]排名系统
    P3165 [CQOI2014]排序机械臂
    P3224 [HNOI2012]永无乡
    P1169 [ZJOI2007]棋盘制作
    P2303 [SDOi2012]Longge的问题
    P2216 [HAOI2007]理想的正方形
    P2473 [SCOI2008]奖励关
    P2617 Dynamic Rankings
    P2518 [HAOI2010]计数
  • 原文地址:https://www.cnblogs.com/hxliang/p/5465947.html
Copyright © 2011-2022 走看看