13、面向对象编程-4

一、final和抽象类

1、final作用

  • 修饰变量:被final修饰的变量是常量
  1. 修饰基本数据类型:只能赋值一次
  2. 修饰引用数据类型:对象不能被赋值,但属性可以修改
  • 修饰方法:被final修饰的方法不能被重写
  • 修饰类:被final修饰的类不能被继承

2、抽象类

注意:

  1. 有抽象方法的类只能定义成抽象类
  2. 抽象类不能实例化,即不能用new来实例化抽象类。
  3. 抽象类必须有构造方法,创建子类对象的时候使用
  4. 一个抽象类至少0个抽象方法,至多(所有的方法都是抽象方法)个抽象方法
  5. 子类必须重写父类的抽象方法,不重写就提示编译错误;或者子类也定义为抽象类

二、接口

1、使用要点:

  1. 声明:权限修饰符 interface 接口名
  2. 接口中的方法是抽象方法
  3. 一个类实现了接口,必须实现接口内的方法,否则变为抽象类
  4. 一个类实现了接口,此类可以作为此接口的子类存在
  5. 一个类可以实现多个接口,必须实现各个接口中的方法,否则变为抽象类
  6. 一个接口可以继承多个接口 ,实现此接口的类,必须实现各个接口内的方法 ,否则变为抽象类
  7. 接口中的变量全局静态常量,默认被 public staic final 修饰
  8. 接口内的方法 默认被 public abstract 修饰
  9. 接口不能创建实例

2、接口应用

内部比较器:

        图书类、学生类、新闻类、商品类等是不同的类,可是却都需要有比较的功能,怎么办?共同的父类不可以,可以定义一个比较接口Comparable,其中定义一个实现比较的方法compareTo(Object obj)。让各个类实现该接口即可。

3、接口新特征

jdk1.8及以后

  1. 接口中可以添加非抽象方法(static),实现类不能重写,只能通过接口名调用。
  2. 接口中可以添加非抽象方法(default),实现类可以重写,只能通过对象名调用。

jdk1.9

  • 接口中可以定义private的非抽象方法。便于将多个方法中的冗余代码进行提取,并且不对外公开。减少冗余、也实现了代码隐藏。

4、面向接口编程

接口就是规范,就是项目中最稳定的核心! 面向接口编程可以让我们把握住真正核心的东西,使实现复杂多变的需求成为可能。

通过面向接口编程,而不是面向实现类编程,可以大大降低程序模块间的耦合性,提高整个系统的可扩展性和和可维护性。

三、内部类

1、非静态成员内部类

  1. 内部类可以直接访问外部类的成员(变量/方法)
  2. 外部类不能直接访问内部类的成员,需要先创建对象再通过对象名访问
  3. 内部类访问外部类的同名成员变量:OuterClass.this.num
  4. 必须先创建外部类的对象,才能创建内部类的对象。格式:OuterClass.InnerClass = new OuterClass().new InnerClass;
  5. 非静态内部类不能有静态方法、静态属性和静态初始化块。

2、静态成员内部类

  1. 静态内部类只能够访问外部类的静态成员
  2. 静态内部类访问外部类的同名成员变量:OuterClass.name;
  3. 静态内部类属于整个外部类的。创建静态内部类的对象,不需先创建外部类的对象;
  4. 创建内部类对象格式:OuterClass.InnerClass = new OuterClass.InnerClass();
  5. 外部类可以通过类名直接访问内部类的静态成员

3、局部内部类

局部内部类访问所在方法的局部变量,要求局部变量必须使用final修饰。JDK1.8中final可以省略,但是编译后仍旧会加final。

4、匿名内部类

  1. 匿名内部类可以实现一个接口,也可以继承一个类(可以是抽象类)。
  2. 匿名内部类只能实现一个接口,而不是多个
  3. 必须实现所有的方法,匿名内部类不能是抽象类
  4. 匿名内部类不可能有构造方法,因为类是匿名的
  5. 匿名内部类没有访问修饰符

四、虚拟机和垃圾回收

1、虚拟机构成

虚拟机:类加载器、运行时数据区、执行引擎、本地(native)方法接口、本地方法库、垃圾回收器。

运行时数据区:方法区(元空间metaspace)、堆区、虚拟机栈、本地方法栈、程序计数器。

2、垃圾回收

  1. 垃圾回收机制主要是回收JVM堆内存里的对象空间。
  2. 垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行。
  3. finalize:垃圾被回收前,最后调用的方法。但永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值