• 抽象类与接口


    一.抽象类的概述

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

    二.抽象类的特点

    • 抽象类和抽象方法(只有方法名,没有方法体)必须用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”的关系。接口中定义的是该继承体系的扩展功能

  • 相关阅读:
    linux 中输出匹配行的下一行
    linux中sed命令删除匹配行及其下一行
    linux中常见的文件类型
    linux中grep命令i匹配以制表符开头的行
    linux中输出匹配行及其后的若干行
    linux中如何删除文本开头的多个空格和tab键
    linux中删除匹配行及其后的若干行
    普通用户修改个人密码:sudo : is not in the sudoers file. This incident will be reported.
    一坨iBatis 的代码。
    ubuntu误删除Desktop文件夹,导致桌面默认路径更改
  • 原文地址:https://www.cnblogs.com/sutao/p/7219988.html
Copyright © 2020-2023  润新知