1.什么时候可以选择final修饰符

如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰。

2.用final修饰的类

首先大家要明白,用final修饰的类是不能被继承的,下面来看一个错误案例。

eg:

final class Penguin

{

}

class SubPenguin extends Penguin

{

}

此时这段代码的class SubPenguin extends Penguin这行代码会报错:

The type SubPenguin cannot subclass the final class :翻译:该类型SubPenguin不能继承的最后类

即.Penguin类不能被继承。

3.用final修饰的方法

eg:

class Penguin

{

public final void print(){}

}

class Subpenguin extends Penguin

{

public void print(){}//错误

}

此时这段代码public void print(){}会报错,提示错误信息:

cannot override the final method from Penguin:翻译:无法覆盖企鹅的最后方法

即.print方法不能被子类重写。

4.用final修饰的变量

用final修饰的变量包括成员变量和局部变量,他们将变成常量,只能赋值一次。

public class Dog

{

final String name="小黄";//用final来修饰狗狗的姓名

public void setname(String name)

{

this.name=name; //错误,name不能在被赋值。

}

}

5.使用final修饰符的注意点

final可以用来修饰类,方法和属性,不能修饰构造方法。

6.用final修饰的引用型变量,变量所指对象的属性值是否能改变?

首先来看一个简单的例子

//狗狗类

public class Dog

{

String name;//狗狗的姓名

//带参构造,给狗狗的名字赋值

public Dog(String name)

{

this.name=name;

}

}

//测试类

class Test

{

public static void main(String[] args)

{

final Dog dog=new Dog("小黄");//实例化一个狗对象,用final修饰

dog.name="大黄";

dog=new Dog("小八");

}

}

这段代码中dog对象被修饰为final成常量,其值不可变,但要注意的是dog.name="大黄";这行代码并没有错,那么dog=new Dog("小八")是错的,也就是说,使用final修饰的引用型变量,变量不可以在指向另外的对象,但是所指变量的内容是可以改变的。

结论:使用final修饰的引用型变量时,变量的值时固定不变的,而变量所指对象的属性值是可变的。

Java学习笔记十九:Java中的访问控制修饰符

Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

详解Java中的访问控制修饰符(public, protected, default, private)

Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...

分享知识-快乐自己:java 中的访问修饰符

1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...

java中4种修饰符访问权限的区别及详解全过程

java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...

(转)JAVA中的权限修饰符

Java final修饰符的作用,Java中的final修饰符相关推荐

  1. android 布局 站位符,基于android布局中的常用占位符介绍

    大家在做布局文件是肯定会遇到过下面的这种情况 填充出现问题,所以需要用到占位符规范填充 汉字常用占位符: android:layout_width="wrap_content" a ...

  2. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  3. android 多个占位符,基于android布局中的常用占位符介绍

    大家在做布局文件是肯定会遇到过下面的这种情况 填充出现问题,所以需要用到占位符规范填充 汉字常用占位符: android:layout_width="wrap_content" a ...

  4. java+中的final关键字有哪些用法_Java中的Final关键字用法汇总及简单示例

    可能使用到final的情况有3种:数据.方法和类. 一.final数据 对于基本类型,final使数值恒定不变:而对于对象引用,final使引用恒定不变.一旦引用被初始化指向一个对象,就无法把它改为指 ...

  5. java 装箱 拆箱的作用_Java中的装箱拆箱

    一)  装箱与拆箱 Java中有概念是一切皆对象,因为所有的类都默认继承自Object.但是,对于数据类型是个例外,如short,int,long,float,double, byte,char,bo ...

  6. java 静态代码块的作用_Java中什么是静态代码块,有什么作用?

    在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.静态代码块随着类加载而加载,有多个静态代码块的,按代码块前后顺序加载. 由于JVM在加 ...

  7. java replace换行符_Java 替换字符串中的回车换行符的方法

    使用正则表达式进行替换: 代码片段: string documenttxt = entityutils.tostring(entity,"gbk");//获取数据 document ...

  8. java静态初始化块的作用_Java 中的 static 使用之静态初始化块

    方法不在main函数里面不会被执行吗? public class HelloWorld { String name; // 声明变量name String sex; // 声明变量sex static ...

  9. qlabel设置换行符无效_php 字符串中的\n换行符无效、不能换行的解决方法

    例如下面的代码: echo 'hello\n'; echo 'world'; ?> 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号: echo "hello ...

最新文章

  1. html中纯js互斥按钮,JS如何实现checkbox互斥功能
  2. Java虚拟机JVM简单理解
  3. SAP云平台和SAP传统Netweaver系统互联的技术方式
  4. android web3j 代币查询_Android通过web3j以太坊智能合约交互
  5. 深度学习 《BiRNN》
  6. [转]OpenGL超级宝典 5e 环境配置
  7. 在Eclipse中用Maven打包jar包--完整版
  8. python语言能做什么-python语言用来干什么
  9. 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册...
  10. 软件测试主要流程分享
  11. CGLib动态代理详解
  12. 洛谷:P哥的桶(线段树 + 线性基)
  13. chrome是什么?
  14. AB 罗克韦尔PLC(1769-ERC)相关与 CK-UR12-E01 关于 EtherNetIP 通信 PLC 配置指南
  15. C语言---函数介绍详解
  16. Lua的浅拷贝和深拷贝
  17. IP地址和子网的划分详解
  18. 用计算机亩换算成平方,平方米亩换算(平方米换算亩计算器)
  19. PR模板 复古回忆棱镜光效梦幻内容展示PR视频模板
  20. STM32F407-外部中断

热门文章

  1. 超级计算机发展及现状论文,浅谈超级计算机发展的过程及研究现状
  2. 小样本点云深度学习库_论文 | 小样本学习综述
  3. linux运行时命令找不到,linux - 在运行Bash脚本时找不到命令,但是在直接运行命令时有效 - 堆栈内存溢出...
  4. 计算机网络工程应用,全面信息化管理在计算机网络工程的应用
  5. linux java no x11_在linux下运行javaMail程序报No X11 DISPLAY variable was...
  6. java连接access_关于k8s下使用Ingress保持长连接的异常情况排查
  7. kubectl查看node状态_适用于初学者的基本 kubectl 和 Helm 命令 | Linux 中国
  8. java中广告维护轮播图怎么做_Banner广告轮播图
  9. win8升级win10出现错误代码1049怎么回事
  10. php sql desc,PHP SQL 查询封装