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的关系。

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

  • 相关阅读:
    PHP基本的语法以及和Java的差别
    Linux 性能測试工具
    【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
    【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
    【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
    Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13728789.html
Copyright © 2011-2022 走看看