接口也是一种引用类型,可以等同看做类
- 如何定义接口,语法:
[修饰符] interface 接口名{}
- 接口中只能出现常量和抽象方法
- 接口其实是一个特殊的抽象类,特殊在接口是完全抽象的
- 接口中没有构造方法,接口无法被实例化
- 接口与接口之间可以多继承
- 一个类可以实现多个接口(这里的实现可以等同看成继承)
- 一个非抽象的类实现接口,需要将接口中所有的方法“实现/重写/覆盖”
接口中的常量public static final
接口中的抽象方法public abstract
implements是实现的意思,是一个关键字
implements和extends意义相同
接口作用:
1.可以使项目分层,所有层都面向接口开发,开发效率提高了
2.接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔”,可以随意切换
接口和抽象类都能完成某个功能,优先选择接口
因为接口可以多实现,多继承
并且一个类除了实现接口之外,还可以去继承其他类,保留了类的继承
Object
toString 以字符串的形式返回java对象
类名@java对象在堆中的内存地址(哈希算法转成16进制)
equals
finalize方法什么时候调用?
1.finalize方法每个java对象都有
2.finalize方法不需要程序员去调用,由系统调用
3.java对象如果没有更多的引用指向它,则该java对象成为垃圾数据
等待垃圾回收器的回收,垃圾回收器在回收这个java对象之前会自动
调用该对象的finalize方法
finalize方法时该对象马上就要回收了,列如:需要释放资源,则可以在该方法中释放
程序员只能“建议”垃圾回收器回收垃圾
hashCode返回该对象的哈希码值
java对象的内存地址经过哈希算法得出的int类型的数值
clone 数据的副本
软件包机制:
1.为了解决类的命名冲突问题,在类前加命名空间(包机制)
2.在java中使用package语句定义包(单包,复包)
3.package语句只能出现在.java源文件的第一行
4.package定义的格式,通常采用公司域名倒叙方式:
例如:com.bjpowernode.oa.system;
以上包含义:bjpowernode公司开发oa项目,system是oa项目中的一个模块
5.完整的类名是带有包名的
6.带有package语句的java源文件必须这样编译
javac -d 生成路径 java源文件路径
7.运行:
java com.bjpowernode.oa.system.A
目录也是类,类的姓
import语句可以引入其他类
import语句只能出现在package语句之下,class定义的语句之上
java.lang 软件包下所有类不需要手动导入.系统自动导入
关于访问权限修饰符:修饰类,修饰方法,修饰变量
private 只能在本类中访问
public 可以在任意位置访问
protected 本类,同一个包下,不同包下不行,但是子类中可以
缺省 本类,同一个包下,不同包下不行
关于静态内部类
1.静态内部类可以等同看做静态变量
内部类的重要作用,可以访问外部类中私有的数据
2.静态内部类可以直接访问外部类的静态数据,无法直接访问成员(静态上下文)
关于成员内部类
1.成员内部类可以等同看做成员变量
2.成员内部类不能有静态声明
3.成员内部类可以访问外部类所有的数据
局部内部类等同于局部变量
局部内部类不能用访问控制权限修饰符修饰
重点:局部内部类在访问局部变量的时候,局部变量必须使用final修饰
匿名内部类:指的是类没有名字
匿名内部类优点:少定义一个类
缺点:无法重复使用
泛化 实现 关联
聚合关系:整体不依赖部分,部分也不会依赖整体
整体不决定部分的生命周期
合成关系
合成关系与聚合关系是相似的,区别的地方在:整体和部分是紧密关联的