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

    继承的概念:

        在现有类的基础上取创建一个新的类,新的类叫做子类,原先的类叫做父类。子类会自动拥有父类可继承的属性与方法。

        格式:class 子类 extends 父类

    继承的好处:

        1:提高了代码的复用性。

        2:让类与类之间产生了关系,提供了多态的前提。

    注意事项:

        只允许单继承,不允许多继承。

                  class A{}

                  class B{}

                  class C extends A,B{}   不被允许。 

    继承子父类中成员变量的特点:  

                   子类访问成员变量,子类有用自己的,没有用父类的。父类中的成员变量是非私有的,子类中可以直接访问,若父类中的成员变量私有了,子类是不能直接访问的。当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用 关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用。

        格式:super.父类中的成员变量。

    继承子父类中的成员方法特点(重写):

        当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

        成员方法特殊情况——覆盖子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。

    方法重写的概念:

        在子父类中,子类中出现了与父类的返回值类型,方法名,形参列表,一模一样的方法就叫做放方法的重写,覆盖。

    方法重写(覆盖)的应用:

        当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。

    方法重写的注意事项:

        1:子类方法覆盖父类方法,必须要保证权限大于等于父类权限(public>protcted>default>private)。

        2:写法上稍微注意:必须一模一样:方法的返回值类型 方法名 参数列表都要一样。

        总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。

    抽象类的概念:

        某些父类从子类抽取出来的相同的一些方法就叫做抽象类。

        格式:abstract class 类名 {}

        抽象类一定是个父类,不能和Private关键字共存。

    抽象方法:

        分析事物时,发现了共性内容,就会向上抽取。只抽取方法声明,不抽取方法主体。 

        格式:public abstract 返回值类型 方法名(参数);

    抽象类的特点:    

                 1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

                 2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

                 3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

                 之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单

     接口的概念:

        接口是功能的集合,本质上还是一个类,只描述应该具备的方法,并没有具体实现,没有方法体,是比类更为抽象的类。接口将功能的实现与定义分离,优化了程序设计。也就是说接口只有方法声明。

                定义格式:

        public interface 接口名 {

        抽象方法1;

        抽象方法2;

        抽象方法3;

        }     接口中的方法均为公共访问的抽象方法,接口中无法定义普通的成员变量。同时,接口中的方法全部用public abstaract 修饰,eclipse会自动补齐。可以省略不写。

    类实现接口:

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

        格式:

        class 类 implements 接口 {

          重写接口中方法

        }    也就是说在接口中只是声明功能,在类中则是具体实现了这个功能。

        类和类之间的关系:一定是单继承关系。
           类和接口之间的关系:实现关系(类实现接口)implements。
           接口和接口之间的关系:继承关系(可以多继承),接口 extends 接口。

    接口中成员的特点:

        1:接口中可以定义变量,但是必须有固定的修饰符修饰,public static final 数据类型 变量名。

        public :公共的,任何人在任何地方都可以使用。

        static:被static修饰的成员变量,方法。都可以用类名.成员名调用。

        final:最终的,被final修饰的量叫做常量,一次赋值,终身不变。

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

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

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

    接口的多实现:

          接口最重要的体现,解决多继承的弊端。因为多继承时,父类有相同的功能(方法)时,子类调用会产生不确定性。也就是说多继承父类时,功能有主体,而导致运行时,不确定运行那些内容。也就是说因为接口中的功能都没有方法体,由子类确定。

    类继承类同时实现接口:

          当一个子类已经继承了父类,又需要扩展额外的功能,这是就可以通过接口来实现。接口的出现避免了单继承的局限性,也就是说父类定义的基本功能,接口定义事物的扩展功能。

    接口的多继承:

          接口可以多继承,通过关键字extends来实现。也就是说由于接口中的方法时抽象方法,没有方法内容,也就是{ },子类实现后也不会发生调用的不确定性。

    接口的好处:

          1:接口的实现扩展了功能。

          2:接口其实就是暴露出来的规则。

          3:接口的出现降低了耦合性,及设备与设备之间实现了解耦。

    接口与抽象类的区别:

          相同点:

              1:都位于继承的顶端,用于被其他类实现或继承。

              2:都不能直接实例化对象。

              3:都可以包含抽象方法,其子类必须覆写这些方法。

          不同点:

              1:抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性,接口只能包含抽象方法。

              2:一个类只能继承一个直接父类(如抽象类),却可以实现多个接口。

              3:抽象类是这个事物中应该具备的内容,继承体系是  is a  的关系。

              4:接口是这个事物中额外的内容,继承体系是一种like a的关系。

        二者的选用,优先选择接口类,需要定义子类的行为,又要为子类提供共性功能时,才选用抽象类。

  • 相关阅读:
    echarts labelLayout
    可视化学习及实战记录
    VS2008提示无法打开包括文件:“afxcontrolbars.h”解决办法
    原码、补码和反码
    第一篇
    vc2008编译就提示找不到msvcr90d.dll
    Vue H5 与 APP 交互 (IOS为例)
    VS Code中小程序与Vue常用插件合集(前端合集)
    如何在Element 使用正则表达式校验
    分享CSS公共类库(能在项目快捷使用CSS类)
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13728789.html
Copyright © 2011-2022 走看看