2.final修饰符

一. 理解final

  1. 多个修饰符之间是没有先后关系的,public static final / public final static / static final public
  2. final本身含义:“最终的,不可改变的”,它可以修饰非抽象类,非抽象方法和变量。

注意:构造方法不能使用final修饰,因为构造方法不能被继承,肯定是最终的。

二.final类

  1. 为最终类,不能有子类。
    只要满足以下条件都可以把一个类,设计成final类:
    1. 某类不是专门为继承而设计
    2. 出于安全考虑,类的实现细节不许改动,不许改源代码。
    3. 确信该类不会再被拓展

面试题:列举5个Java中内置的使用final修饰的类
Java里final修饰的类有很多,比如八大基本数据类包装类和String等。

三. final方法

  1. 最终方法,该方法不能被子类覆盖。
    1. 在父类中提供的统一的算法骨架,不准子类通过方法覆盖来修改,此时使用final修饰。
    2. 在构造器中调用的方法(初始化),此时一般使用final修饰

注意:final修饰的方法,子类可以调用,但是不能覆盖。

四. final变量

  1. 最终的变量,常量,该变量只能赋值一次。不能再赋值。
    final是唯一可以修饰局部变量的修饰符。

    1. final变量必须显示地指定初始值,系统不会为final字段初始化。
    2. final变量一旦赋予初始值,就不能被重复赋值。
    3. 常量名规范:常量名符合标识符,单词全部大写,单词间使用下划线隔开。
  2. int 类型的最大值:final int MAX_VALUE = 34;

  3. 全局静态常量:public static final 修饰的常量;

image

  1. final修饰基本类型变量:表示该变量的值不能改变,即不能用“=”号重新赋值。

  2. final修饰引用类型变量:表示变量的引用的地址不能变,而不是引用地址里的内容不能变。

  3. final是唯一可以修饰局部变量的修饰符,
    局部内部类只能访问final修饰的局部变量。

  4. 一般的,在开发中会专门定义一个常量类,专门用来存储常量数据。

五. 单例模式

  1. 设计模式(Design pattern):是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验
    的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。毫无疑
    问,设计模式于己于他人于系统都是多赢的,设计模式是代码真正工程化;设计模式是软件工程
    的基石脉络,如同大厦的结构一样。

  2. 单例设计模式(singleton):最常用,最简单的设计模式

  3. 目的:保证某一个在整个应用中有且只有一个实例(一个类在内存值存在一个对象),即所有指向该
    类型实例的引用都指向同一块内存空间。

  4. 单例模式的步骤:饿汉式

    1. 必须在该类中,自己先创建一个对象。
    2. 私有化自身的构造器,防止外界通过构造器创建新的对象。
    3. 向外暴露一个公共的静态方法,用于获取自身的对象。

新建SingletonDemo.java

//单例设计模式
class ArrayUtil
{	//1)必须在该类中,自己先创建一个对象。
	private static final ArrayUtil instance = new ArrayUtil();
	//2)私有化自身的构造器,防止外界通过构造器创建新的对象。
	private ArrayUtil(){}
	//3)向外暴露一个公共的静态方法,用于获取自身的对象。
	public static ArrayUtil getinstance(){
		return instance;
	} 
	public void sort(){
		System.out.println("排序方法");
	}
}
class  SingletonDemo
{
	public static void main(String[] args) 
	{
		System.out.println(ArrayUtil.getinstance() == ArrayUtil.getinstance());
		ArrayUtil.getinstance().sort();
		ArrayUtil.getinstance().sort();

	}
}

六. 工具类设计

  1. 工具类:存放了某一类事物的工具方法的类。

  2. 工具类存放的包:工具包(util,utils,tools,helper,helpers),存放工具类。

  3. 工具类起名:XxxUitl,表示一类事物,

  4. ArayUril,StringUtil

  5. 如何设计:工具在开发中存在一份即可,

    1. 如果工具方法没有使用static修饰,说明工具方法得使用工具类的对象来调用。
      此时把工具类设计为单例的。
    2. 如果工具方法全部使用static修饰,说明工具方法只需要使用工具类名调用即可。
      此时必须把工具类的构造器私有化(防止创建工具类对象调用静态方法。)
  6. 一般的,首选第二种,简单,在JDK中提供的工具都是第二种,java.util.Arrays类。

发布了58 篇原创文章 · 获赞 0 · 访问量 735

猜你喜欢

转载自blog.csdn.net/huang_kuh/article/details/104862510