我是靠谱客的博主 懵懂跳跳糖,最近开发中收集的这篇文章主要介绍面向对象16:代码块、final关键字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码块(或初始化块)

  • 代码块的作用:用来初始化类、对象(从这个角度看,把它叫作初始化块)
  • 代码块如果有修饰的话,只能使用static
  • 分类:静态代码块 vs 非静态代码块

静态代码块

static {

}
  • 内部可以有输出语句
  • 随着类的加载而执行,且只会执行一次
  • 作用:初始化类的信息(比如静态属性)
  • 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行。
  • 静态代码块的执行要优先于非静态代码块的执行
  • 静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构

非静态代码块

{
	
}
  • 内部可以有输出语句
  • 随着对象的创建而执行
  • 每创建一个对象,就执行一次非静态代码块
  • 作用:可以在创建对象时,对对象的属性等进行初始化
  • 如果一个类中定义了多个代码块,则按照声明的先后顺序执行
  • 非静态代码块内部可以调用静态属性、静态方法,或非静态属性、非静态方法。

对属性可以赋值的位置:

  1. 默认初始化
  2. 显式初始化
  3. 构造器中初始化
  4. 有了对象后,可用“对象.属性”、“对象.方法”的方式进行赋值
  5. 在代码块中赋值
    执行先后顺序:1-2/5-3-4(2或5只看谁先声明,但一般没人把代码块声明在前面)

final关键字

1.final可以用来修饰的结构:类、方法、变量
2.final用来修饰一个类:此类不能被其他类所继承(即此类不能有子类了)。比如:String类、System类、StringBuffer类
3.final用来修饰方法:表明此方法不可以被重写。比如:Object类中的getclass();
4.final用来修饰变量:此时的“变量”就称为是一个常量

  1. final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
  2. final修饰局部变量:尤其是使用final来修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值后,就只能在方法体内使用此形参,但不能进行重新赋值。

static final用来修饰属性:全局常量

注意:当我们把对象形参设成final时,对象里的属性可以变。

public void addOne(final other o){
	o.i++;
}

以上代码是合法的。

最后

以上就是懵懂跳跳糖为你收集整理的面向对象16:代码块、final关键字的全部内容,希望文章能够帮你解决面向对象16:代码块、final关键字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部