零基础Java:第十八讲(工厂方法(FactoryMethod)、类的成员之五:内部类)

117 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

工厂方法(FactoryMethod)

  • 工厂方法(FactoryMethod)

    • FactoryMethod模式是设计模式中应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
    • 个人理解:在开发人员A便把类实例化(如果不对则会报错,就不会到B手里出错,而传统是B部分才实例化),到了开发人员B手里,可直接使用固定的代码
    • 工厂方法举例(在真正的开发工作中,都是合作开发,每个开发人员写部分代码,大家集合在一起就是一个项目)。

      • 问题:开发人员A要改代码,例如改类名,把BWM3改成BWM3i,导致开发人员B也要改代码
      • 具体代码

        • 第一步:宝马车的产品接口
        • 第二步:汽车生产工厂接口
        • 第三步:开发人员B使用
        • 总结:通过工厂把new对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其他合作开发人员的编程

类的成员之五:内部类

  • 类的成员之五:内部类

    • 在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。
    • inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称

      • inner class的名字不能与包含它的类名相同
    • inner class可以使用外部类的私有数据,因为它是外部类的成员,同一个类的成员之间可以相互访问。而外部类要访问内部类中的成员需要:内部类 . 成员或者内部类对象 . 成员。
    • 分类:成员内部类(static成员内部类和非static成员内部类)

      • 局部内部类(不谈修饰符)、匿名内部类
    • 举例
    • 内部类的特性

      • inner class作为类的成员:

        • 可以声明final
        • 和外部类不同,inner class可以声明为private 或 protected
        • inner class可以声明为static的,但此时就不能再使用外层类的非static成员变量
      • inner class作为类:

        • 可以声明为abstract类,因此可以被其他内部类继承
      • 注意:非static的内部类中的成员不能声明为static的,只有在外部类或static的内部类中才可以声明static成员
    • 内部类的最大作用:实现多重继承

      • 举例:类A想同时获得类B和类C的方法并且重写( 可以使用内部类变相的实现类的多重继承,可以同时继承多个类)

        • 类A、B、C
        • 调用A同时继承实现B、C的方法