Core Java 8 学习笔记(七)接口和内部类

本文主要探讨Java中的接口和内部类特性。接口作为多继承的替代方案,强调'like-a'关系,强制实现所有抽象方法。内部类则提供了一种实现多继承的方式,同时具备封装和访问控制的特点。通过实例,我们展示了如何利用内部类实现多继承,以及匿名内部类的便捷用法。此外,还讨论了接口与抽象类在设计理念上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、接口(interface)

1. 在Java中,没有C++那样的多继承机制,所以有了接口和内部类的概念。

2. 和抽象类的区别

  • 一个类只能继承一个抽象类,但是可以实现多个接口。
  • 接口可以看作是成员函数全部是抽象的特殊抽象类
  • abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
  • 实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
  • 接口是公开(public)的,里面不能有私有的方法或变量,是用于让别人使用的,实现接口的一定要实现接口里定义的所有方法。
  • 而抽象类是可以有私有方法或私有变量的,实现抽象类可以有选择地重写需要用到的方法,但是必须实现里面所有的抽象方法。
3. 总结(摘):abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概 念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系(虽然都能够实现需求的功能)。这其实也是语言的一种的惯用法,希望读者朋友能够细细体会。
4. 一些接口
  • Cloneable用来实现深拷贝
  • Comparable可用于Array.sort排序时的比较
二、内部类
1. 内部类的共性:
  • age,this.age, Out.this.age分别访问的是方法的局部变量,内部类的私有变量,外部类的私有变量
  • 程序编译过后会产生两个.class文件,分别是Out.class和Out$In.class
  • 可以在类里面定义两个内部类,分别继承,这样子就实现了多继承,而且还封装隐藏起来了。
2. 成员内部类
  • 就是说是外部类的一个成员,和成员函数,成员变量没什么区别,提供方便的访问和封装保护。
3. 方法内部类
4. 匿名内部类
  • 可以说是为节省空间或代码而发明了匿名内部类,非常使用和常见
  • 没有类名,直接new出来
  • (重要)可以继承一个抽象类或者实现多个接口,并实现所有的抽象方法。
5. 静态内部类
  • 如果用static 将内部内静态化,那么内部类就只能访问外部类的静态成员变量,具有局限性
三、链接
匿名内部类的讲解:http://blog.youkuaiyun.com/liuzhidong123/article/details/6561521
动态代理(高级技术,mark!):http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值