记录生活中的点点滴滴

0%

进阶5

接口也是一种引用类型,可以等同看做类

  • 如何定义接口,语法:

  [修饰符] 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修饰

匿名内部类:指的是类没有名字

 匿名内部类优点:少定义一个类

 缺点:无法重复使用

泛化 实现 关联

聚合关系:整体不依赖部分,部分也不会依赖整体
整体不决定部分的生命周期

合成关系
合成关系与聚合关系是相似的,区别的地方在:整体和部分是紧密关联的