2018-05-02html
为何须要final修饰符?java
继承关系最大的弊端就是破坏封装:子类能够访问父类的实现细节,并且能够经过方法覆盖的形式修改细节。面试
---------------------------------------------------------------------------------------------------算法
多个修饰符之间是没有前后关系的。 public static final /public final static /final static public 这些写法都正确。设计模式
-------------------------------------------------------------------------------------------------------------------安全
final自己的含义就是最终的,不可改变的。spa
final能够修饰非抽象类、非抽象方法和变量。注意:构造方法不能被final修饰,由于构造方法不能被继承(构造方法名必须与类名相同,因此没法被继承),所以构造方法自己就是最终的线程
final书本定义:设计
1.final能够修饰变量,被final修饰的变量被赋初值后,不能对它从新赋值htm
2.final能够修饰方法,被final修饰的方法被重写
3.final能够修饰类,被final修饰的类不能派生子类
总的来讲,就是值不能改,方法不能重写,类不能继承,就至关因而终结版。
-----------------------------------------------------------------------------------------------
1、final修饰的变量:最终的变量即表示常量,该变量只能赋值一次,不能再次赋值
特色:
一、 final变量必须显示指定初始值,系统不会为final字段初始化.
且只能以如下三种方式进行初始化:
1)定义时初始化
2)在非静态初始化块中为final实例变量指定初始值
3)在构造器中指定初始值
二、 final变量一旦赋予初始值,就不能被从新赋值.
三、常量名规范:常量名称符合标识符,单词所有使用大写。若是由多个单词组成,单词间使用下划线隔开。例如:final int MAX_VALUE = 6;
全局静态变量:使用 public,static, final 同时修饰的变量。直接使用类名调用便可。
-------------------------------------------------------------------------------
面试题:final修饰引用类型的常量究竟是表示该变量的引用的地址不能改变仍是引用地址里的内容不能改变?
final修饰基本类型的变量:表示该变量的值不能改变,即不能用" = "号从新赋值
final修饰引用类型的常量:表示该变量的引用的地址不能改变,而不是引用地址里的内容不能改变
-----------------------------------------------------------------------------------------
final是惟一能够修饰局部变量的修饰符
局部内部类只能访问final修饰的局部变量
-------------------------------------
何时使用常量?
当在程序中,多个地方须要使用到共同的数据,且该数据不会改变,此时咱们专门定义全局变量。
通常在开发中,咱们会定义一个常量类,专门用来存储数据。
----------------------------------------------------------------------------------------------------------------------------
2、final修饰的方法:最终的方法,该方法不能被子类覆盖.
何时方法须要使用final修饰?
1):在父类中提供的同一的算法骨架,不许子类经过方法覆盖来修改,此时用final修饰.模板方法设计模式
2):在构造器中调用的方法(初始化方法),此时通常使用final.修饰
注意:fina修饰的方法,子类能够调用,可是不能覆盖,
------------------------------------------------------------------------------------------------------------------------------
3、final修饰的类:表示最终的类,该类不能再有子类
只要知足下列条件之一就能够把一个类设计成final类
1)本类不是专门为继承而设计
2)出于安全考虑,类的实现细节不容许改动
3)该类不会被拓展
面试题:列举5个Java中内置的使用final修饰的类
java里final修饰的类有不少,八大基本数据类型类和String类.
参考:http://www.javashuo.com/article/p-mlqymwhv-dv.html
-------------------------------------------------------------------------------
4、单例设计模式
什么是单例设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石同样。项目中合理的运用设计模式能够完美的解决不少问题,每种模式在如今中都有相应的原理来与之对应,每个模式描述了一个在咱们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被普遍应用的缘由。
单例模式的步骤:
第一种:懒汉式,线程不安全
一、必须在该类中,先本身建立一个对象。
二、私有化自身的构造器,防止外界经过构造器创造出新的对象。
三、向外暴露一个公共的静态方法,用于获取自身的对象。