• 面向对象-接口与多态


    * Java语言的继承是单一继承,一个子类只能有一个父类(一个儿子只能有一个亲爹)

     * Java语言给我们提供了一种机制,用于处理继承单一的局限性的,接口

     *

     * 接口:接口是一个比抽象类还抽象的类,接口里所有的方法全是抽象方法,接口和类的关系是实现,implements

     * interface

     *

     * 格式:

     * interface 接口名 {

     *

     * }

    * 接口的成员特点:

     * 只能有抽象方法

     * 只能有常量

     * 默认使用public&abstract修饰方法

     * 只能使用public&abstract修饰方法

     * 默认使用public static final来修饰成员变量

     *

     * 建议:建议大家手动的给上默认修饰符

     *

     * 注意:

     * 接口不能创建对象(不能实例化)

     * 类与接口的关系是实现关系,一个类实现一个接口必须实现它所有的方法

    * 类与类:继承关系,单一继承,多层继承

     * 类与接口:实现关系,多实现

     * 接口与接口的关系:继承关系,多继承

    定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。

    接口中的方法全是抽象方法,直接new接口来调用方法没有意义,Java也不允许这样干

    类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements

    其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。

    格式:

    class implements 接口 {

    重写接口中方法

     

    1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解fnal关键字

    2、接口中可以定义方法,方法也有固定的修饰符,public abstract

    3、接口不可以创建对象。

    4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。

    接口和抽象类的区别

    1.共性:

    不断的进行抽取,抽取出抽象的,没有具体实现的方法,都不能实例化(不能创建对象)

    2.区别1: 与类的关系

    (1)类与接口是实现关系,而且是多实现,一个类可以实现多个接口,类与抽象类是继承关系,Java中的继承是单一继承,多层继承,一个类只能继承一个父类,但是可以有爷爷类

    (2)区别2: 成员

    a.成员变量

    抽象类可以有成员变量,也可以有常量

    接口只能有常量,默认修饰符public static final

    b.成员方法

    抽象类可以有抽象方法,也可以有非抽象方法

    接口只能有抽象方法,默认修饰符 public abstract

    c.构造方法

    抽象类有构造方法,为子类提供

    接口没有构造方法

     

     

    * 多态的前提:

     

     * 子父类的继承关系

     

     * 方法的重写

     

     * 父类引用指向子类对象

     

     *

     

     * 动态绑定:运行期间调用的方法,是根据其具体的类型

     

     

    * 多态的成员特点:

     

     * 成员变量  编译时看的是左边,运行时看的左边

     

     * 成员方法  编译时看的是左边,运行时看右边

     

     * 静态方法  编译时看的是左边,运行时看的也是左边.因为使用变量去调用静态方法,其实相当于用变量类型的类名去调用

     

     *

     

     *

     

     * 编译时看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态的方法)看的都是左边

     

     

    * 多态的优缺点

     

     * 优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性

     

    缺点:无法直接访问子类特有的成员

     

     

     

    * final: 修饰符,可以用于修饰类、成员方法和成员变量

     

     * final所修饰的类:不能被继承,不能有子类

     

     * final所修饰的方法:不能被重写

     

     * final所修饰的变量:是不可以修改的,是常量

     

     *

     

     * 常量:

     

     * 字面值常量:1,2,3

     

     * 自定义常量:被final所修饰的成员变量,一旦初始化则不可改变

     

     *

     

     * 注意:自定义常量必须初始化,可以选择显示初始化或者构造初始化

     

  • 相关阅读:
    “回调地址”全攻略 java程序员
    超棒的纯Javascript实现的文件上传功能 Fine uploader java程序员
    帮助你操作数字和处理数字格式的javascript类库 Numeral.js java程序员
    正则表达式 java程序员
    一款非常棒的CSS 3D下拉式菜单实现Makisu java程序员
    Google的全新在线地图API演示网站 More than a map java程序员
    Android中的布局属性 java程序员
    整理一系列优秀的Android开发源码 java程序员
    Lambda表达式select()和where()的区别
    按公式产生随机数、java中的重载、递归、有关计算机计算的问题
  • 原文地址:https://www.cnblogs.com/samuraihuang/p/9785555.html
Copyright © 2020-2023  润新知