接口 匿名对象 内部类

接口

  • 概念
    • 比抽象类更抽象的类
    • 只描述所应具备的方法,并没有实现
    • 将功能定义与实现实现分离,优化了程序设计
    • 接口是功能的集合
    • 接口的方法都是public abstract方法
    • 接口的成员变量都是public final static变量
    • 类 实现 接口,使用implements关键字
    • 子类必须重写父类接口所有的方法,否则只能抽象类
    • 接口不能实例化
    • 接口:多继承 ,即接口可以继承多个接口
    • 接口子类:多实现,即子类可以实现多个接口
    • 多个类可以实现同一个接口,一个类可以实现爱你多个接口
  • 接口思想

    • 接口的出现扩展了功能
    • 接口其实是暴露出来的规则
    • 接口的出现降低了耦合性,即设备与设备之间出现了解耦
  • 接口与抽象类

    • 相同点:

      • 都位于继承的顶端,用于被其他类实现或者继承
      • 不能实例化
      • 包含抽象方法,子类必须重写这些方法
    • 区别:

      • 抽象类可以包含非抽象方法,而接口只能有抽象方法
      • 一个类只能继承一个直接父类,但是可以实现多个接口

匿名对象

  • 概念

    • 在创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量
  • 特点

    • 没有变量名
    • 只能使用一次
    • 可以作为方法接收的参数 方法返回值使用

内部类

  • 概念

    • 将类写在其他类的内部,可以写在其他类的成员位置和局部位置
    • 内部类可以自由访问外部类的成员变量
    • 如果内部类是静态的,就不能访问外部类的静态变量
    • 成员内部类
      • 外部类名。内部类名 变量名 = new 外部类名()。内部类名();
      • 成员内部类中不能存在任何static的变量和方法
      • 成员内部类是依附于外部类的,只有先创建了外部类才能创建内部类
      • 成员内部类可以无条件访问外部类的所有成员变量和成员方法
      • 外部类要访问内部类的属性和方法,必须先创建内部类对象
      • 内部类破坏了良好的代码结构,唯一的好处是不用创建外部类对象,内部类对象就可以任意访问外部类的成员变量
      • 内部类中没有同名成员变量时,内部类会直接访问外部类的成员变量;有同名成员变量时,直接访问的是内部类的变量,若要使用外部类的变量,需要加this.属性名
    • 局部内部类

      • 外部类方法中:new 内部类。方法();
      • 在外部类中调用此方法,会创建内部类对象
      • 如果此时我们需要往外部类的方法中传入参数,需要用final修饰,没有特殊含义,只是一种形式
      • 内部类中只能访问外部类方法中定义的final类型的局部变量,可以任意访问外部类的成员变量
        • 主要解决编译问题
        • 因为外部类中的局部变量是随方法存放在内存栈中的,方法结束这些局部变量就消失
        • 而局部内部类跟其他类一样,是在内存堆中的,不会随方法结束而立马消失
        • 出现一种问题:局部变量销毁了,而使用这些局部变量的局部内部类却依然在
        • 所以才要求局部内部类使用的局部变量为final修饰的,这样会在内部类中拷贝一份该值,不会出现编译问题
    • 静态内部类

      • 使用static修饰成员内部类
      • 只能访问外部类的静态属性和静态方法
      • 使用外部资源,需要实例化外部类对象
      • 创建时可以直接new出来对象
    • 私有内部类
      • 可以用private修饰内部类,这样只能在外部类内部创建内部类
  • 内部类的实际使用–匿名内部类

    • 使用内部类的原因:
      • 适当java的多继承更加完整
      • 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
      • 方便编写事件驱动程序
      • 方便编写线程代码
    • 在类的内部, 将内部类的定义与创建放到一起完成,这种没有名字的类称为匿名内部类
    • 匿名内部类可以继承或实现一个接口,也只能是一个
    • 不能定义构造器,也不能new创建实例,也只是用一次.定义 构造,第一次使用一次完成.
    • -
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值