zoukankan      html  css  js  c++  java
  • 抽象类与接口

    一.抽象类的概述

      我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须为抽象类。

    二.抽象类的特点

    • 抽象类和抽象方法(只有方法名,没有方法体)必须用abstract关键字修饰
    • 抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类
    • 抽象类不能实例化,因为它不是具体的。
    • 抽象类有构造方法,但是不能实例化。构造方法的作用是什么呢?用于子类访问父类数据的初始化。
    • 抽象的子类:1.如果不想重写抽象方法,该子类是一个抽象类;2.重写所有的抽象方法,这个时候子类是一个具体的类。
    • 抽象类的实例化是靠具体的子类实现的,是多态的方式。eg. Animal a = new Dog();
    • 抽象方法的权限修饰符必须为public

    三.抽象类的成员特点

    • 成员变量:既可以是变量,也可以为常量
    • 构造方法:用于子类访问父类数据的初始化
    • 成员方法:既可以是抽象的,也可以是非抽象的

      抽象类的成员方法特点:

    1. 抽象方法:强制要求子类做的事情
    2. 非抽象方法:子类继承的事情,提高代码的重用性

    四.抽象类不能和下面的关键字共存

    • private  冲突,非法的修饰符组合:abstract   和  private
    • final      冲突,非法的修饰符组合
    • static    无意义

    五.接口的特点:

    • 接口用关键字interface表示:interface 接口名 { }
    • 类实现接口用implements表示:class 类名 implements 接口名{ }
    • 接口不能实例化,但是可以按照多态的方式来实例化
    • 接口是一种特殊的抽象类
    • 接口的子类
      1. 可以是抽象类,但是意义不大
      2. 可以是具体类,要重写接口中的所有抽象方法(推荐方法) 

      由此可见:

    1. 具体类多态(几乎没有)
    2. 抽象类多态(常用)
    3. 接口多态(最常用)

    六.接口成员特点

    成员变量:只能是常量,并且是静态的
        默认修饰符:public static final
    构造方法:接口没有构造方法。
    成员方法:只能是抽象方法
        默认修饰符:public abstract

    七.

      类与类
        继承关系,只能单继承,可以多层继承。
      类与接口
        实现关系,可以单实现,也可以多实现。
        并且还可以在继承一个类的同时实现多个接口。
      接口与接口:
        继承关系,可以单继承,也可以多继承。

    八.抽象类和接口的区别:

    A:成员区别
      抽象类:
        成员变量:可以变量,也可以常量
        构造方法:有
        成员方法:可以抽象,也可以非抽象
      接口:
        成员变量:只可以常量
        成员方法:只可以抽象

    B:关系区别
      类与类
        继承,单继承
      类与接口
        实现,单实现,多实现
      接口与接口
        继承,单继承,多继承

    C:设计理念区别
      抽象类: 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能
      接口: 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能

  • 相关阅读:
    从零基础到精通的前端学习路线
    js点击弹出网页弹框
    JS实现在线统计一个页面内鼠标点击次数-刷新过后也会保留上次点击次数
    Input文本框随着输入内容多少自动延伸有-bug
    关于Java 后台分页
    关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const
    关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于块级变量 let
    接上篇 checkbox数据的带入
    关于checkbox 样式的改变 设置自定义样式
    关于文件上传-图片上传
  • 原文地址:https://www.cnblogs.com/sutao/p/7219988.html
Copyright © 2011-2022 走看看