疯狂java讲义2

接口:

  • 接口定义某一批类所需要的规范。规定类里必须提供某些方法。不提供实现
  • interface 
  • 一个接口可以有多个直接父接口,但接口只能继承接口。
  • 接口只能含有静态变量,方法(抽象方法,类方法,默认方法),内部类。无构造器和初始化块。
  • 只能用public
  • 成员变量自动添加public static final 修饰符,并且在定义时指定默认值。
  • 接口里的默认方法要用default修饰,定义类方法要用static修饰。
  • 接口可以多继承,接口不能用于创建实例,但可以用于声明引用变量类型。
  • 类可以实现多个接口用implements.   多继承。
  • 类要完全实现接口中定义的抽象方法,不实现的话这个类必须定义为抽象类。

接口和抽象类的区别:

  • 接口只能有抽象方法和默认方法,抽象类里可以有普通方法且有方法体。
  • 接口里不能定义静态方法,抽象类里可以定义静态方法。
  • 接口里只能定义静态常量,不能定义普通成员变量,抽象类可以。
  • 接口里不含构造器,抽象类里可以含构造器,抽象类里面的构造器不能创建对象,而是让子类调用构造器来完成抽象类的初始化。
  • 接口不能有初始化块,抽象类里可以有,
  • 一个类最多有一个直接父类,包括抽象类,但一个类可以有多个接口。

面向接口编程

  1. ’简单工厂模式
  2. 命令模式

内部类:为了更好地封装,不允许别的类访问该内部类。外部类。

  • 内部类成员可以直接访问外部类的私有数据,外部类不可以访问内部类的实现细节。
  • 匿名内部类适合用于创建仅需要使用一次的类,

 垃圾回收:

  • 垃圾回收机制只负责回收堆内存里的对象,不回收物理资源。
  • 程序无法精确控制垃圾回收。
  • 垃圾回收对象之前会调用它的finalize()方法,可能会复活。
  • 对象在内存中的状态:1,可达状态,2.可恢复状态,没有引用,但在回收之前调用finlaize()时重新引用,会变成可达状态 3.不可达状态:永久失去引用,被回收。
  • 强制垃圾回收:通知系统进行垃圾回收,是否回收了不一定,
  • 调用System类的gc()静态方法:System.gc()
  • 调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc();

 

finalize方法(Object类里的实例方法)

  • 可以重写
  • 不能主动调用,应交给垃圾回收机制调用。
  • 何时被调用不确定,也不一定会被调用
  • JVM执行课恢复对象的finalize()方法时,可能使该对象变成可达状态。
  • JVM调用方法出现异常时,垃圾回收机制不会报告异常,程序继续执行。

 

对象引用:

1.强引用:创建对象并将对象赋给引用变量,程序通过引用变量来操作。

2.软引用:SoftReference类,内存紧张时有可能被回收,用于内存敏感程序。

3.弱引用:WeakReference类,级别耕地,当垃圾回收机制运行,不管内存是否足够,弱引用对象都会回收。

4.虚引用:PhantomReference类,类似于没有引用,用于跟踪对象被垃圾回收的状态,不能单独使用,必须和引用队列联合使用。虚引用无法用来获得被引用对象。

都有get()方法,用于获取引用对象。

引用队列:java.lang.ref.ReferenceQueue类表示,用于保存被回收后的对象的引用,系统回收对象时,把被回收对象对应的引用添加到引用队列中。

转载于:https://www.cnblogs.com/Aozorazy/p/10451482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本光盘是《疯狂Java讲义》一书的配书光盘,书中的代码按章、按节存放, 即第3章第1节所使用的代码放在codes文件夹的03\3.1文件夹下,依此类推。 另:书中每份源代码也给出与光盘源文件的对应关系,方便读者查找。 本光盘codes目录下有18个文件夹,其内容和含义说明如下: (1) 01~18文件夹名对应于《疯狂Java讲义》中的章名, 即第3章所使用的代码放在codes文件夹的03件夹下,依此类推。 (2) 本书所有代码都是IDE工具无关的程序,读者既可以在命令行窗口直接编译、 运行这些代码,也可以导入Eclipse、NetBeans等IDE工具来运行它们。 (3) 本书第12章第11节的TestTableModel.java程序,以及第13章绝大部分程序 都需要连接数据库,所以读者需要先导入*.sql文件中的数据库脚本,并修改 mysql.ini文件中的数据库连接信息。连接数据库时所用的驱动程序JAR文件 为mysql-connector-java-3.1.10-bin.jar文件。这些需要连接数据库的程序 里还提供了一个*.cmd文件,该文件是一个批处理文件,运行该文件可以运行 相应的Java程序,例如DatabaseMetaDataTest.java对应的*.cmd文件为 runDatabaseMetaDataTest.cmd。 (4) 光盘根目录下提供了一个“Java设计模式(疯狂Java联盟版).chm”文件,这是一份 关于设计模式的电子教材,由疯狂Java联盟的杨恩雄亲自编写、制作,他同意广 大读者阅读、传播这份开源文档。 (5) 因为本书第1版有些读者提出关于《疯狂Java讲义》课后习题标准答案的问题, 因此本书光盘根目录下包含一个project_codes文件夹,该文件夹里包含了疯狂 Java联盟的杨恩雄编写的《疯狂Java实战演义》一书的光盘内容,该光盘中包 含了大量实战性很强的项目,这些项目基本覆盖了《疯狂Java讲义》课后习题 的要求,读者可以参考相关案例来完成《疯狂Java讲义》的课后习题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值