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

来源:互联网 发布:淘宝卖坐骑要建dk号 编辑:程序博客网 时间:2024/04/27 22:07

一、接口(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.csdn.net/liuzhidong123/article/details/6561521
动态代理(高级技术,mark!):http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

0 0
原创粉丝点击