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”的关系。接口中定义的是该继承体系扩展功能。

  • 相关阅读:
    内核初始化. Part 4【转】
    fixmap addresses原理【转】
    linux内核调试项【转】
    Linux Suspend流程分析【转】
    Linux电源管理-Suspend/Resume流程【转】
    Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】
    内核regmap机制【转】
    ARM NVIC控制器(基于cortex-M4)【转】
    Linux设备树语法详解-中断【转】
    [Go] 第一个单词首字母变大写:Ucfirst(),第一个单词首字母变小写:Lcfirst()
  • 原文地址:https://www.cnblogs.com/hxliang/p/5465947.html
Copyright © 2011-2022 走看看