java疯狂讲义2_疯狂java讲义2

接口:

接口定义某一批类所需要的规范。规定类里必须提供某些方法。不提供实现

interface

一个接口可以有多个直接父接口,但接口只能继承接口。

接口只能含有静态变量,方法(抽象方法,类方法,默认方法),内部类。无构造器和初始化块。

只能用public

成员变量自动添加public static final 修饰符,并且在定义时指定默认值。

接口里的默认方法要用default修饰,定义类方法要用static修饰。

接口可以多继承,接口不能用于创建实例,但可以用于声明引用变量类型。

类可以实现多个接口用implements.   多继承。

类要完全实现接口中定义的抽象方法,不实现的话这个类必须定义为抽象类。

接口和抽象类的区别:

接口只能有抽象方法和默认方法,抽象类里可以有普通方法且有方法体。

接口里不能定义静态方法,抽象类里可以定义静态方法。

接口里只能定义静态常量,不能定义普通成员变量,抽象类可以。

接口里不含构造器,抽象类里可以含构造器,抽象类里面的构造器不能创建对象,而是让子类调用构造器来完成抽象类的初始化。

接口不能有初始化块,抽象类里可以有,

一个类最多有一个直接父类,包括抽象类,但一个类可以有多个接口。

面向接口编程

’简单工厂模式

命令模式

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

内部类成员可以直接访问外部类的私有数据,外部类不可以访问内部类的实现细节。

匿名内部类适合用于创建仅需要使用一次的类,

垃圾回收:

垃圾回收机制只负责回收堆内存里的对象,不回收物理资源。

程序无法精确控制垃圾回收。

垃圾回收对象之前会调用它的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类表示,用于保存被回收后的对象的引用,系统回收对象时,把被回收对象对应的引用添加到引用队列中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值