zoukankan      html  css  js  c++  java
  • java 使用内部类的理由

    每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响

    内部类有效的实现了多重继承,也就是说,内部类允许继承多个非接口类型(类或抽象类)

    如果拥有抽象类或具体的类,而不是接口,那就只能使用内部类才能够实现多重继承

    package object;
    //: innerclasses/MultiImplementation.java
    // With concrete or abstract classes, inner
    // classes are the only way to produce the effect
    // of "multiple implementation inheritance."
    
    
    class D {}
    abstract class E {}
    
    class Z extends D {
      E makeE() { return new E() {}; }
    }
    
    public class MultiImplementation {
      static void takesD(D d) {}
      static void takesE(E e) {}
      public static void main(String[] args) {
        Z z = new Z();
        takesD(z);
        takesE(z.makeE());
      }
    } ///:~

    如果不需要解决多重继承的问题,那么自然可以用别的代码,而不需要使用内部了,但如果使用内部类,还可以获得一些其它特性

    1)内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息,相互独立

    2)在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类

    3)创建内部类对象的时刻并不依赖于外围类对象的创建

    4)内部类并没有令人迷惑的"is-a"关系,它就是一个独立的实体

  • 相关阅读:
    旧文备份:CANopen协议PDO的几种传输方式
    CANopen 基础
    单片机FLASH与RAM、ROM的关系
    在CANopen网络中通过LSS服务设置节点地址和网络波特率
    STM32F103 CAN中断发送功能的再次讨论
    由RS-232串口到PROFIBUS-DP总线的转换接口设计
    profibus 的DPV0 和DPV1
    PROFIBUS-DP
    profibus总线和profibus dp的区别
    获取验证码倒计时
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10235598.html
Copyright © 2011-2022 走看看