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中的final修饰符的更多相关文章

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

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

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

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

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

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

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

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

  5. (转)JAVA中的权限修饰符

    注:本博文是转载的,原文地址:http://blog.csdn.net/xk632172748/article/details/51755438 Java中修饰符总结: 访问控制修饰符 访问控制修饰符 ...

  6. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  7. java中的访问修饰符详解

    主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...

  8. Java中的权限修饰符private、protected、public

    java中的修饰符分类: 权限修饰符: private, default, protected, public 状态修饰符: static, final 抽象修饰符: abstract 权限修饰符 我 ...

  9. Java中的类修饰符

    资料主要来源于网络(http://60.28.60.3/zy/java-new/zhishidian/chap3/3.htm) 之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这 ...

随机推荐

  1. 简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)

    在SQLSERVER,简单的组合sp_spaceused和sp_MSforeachtable这两个存储过程,可以方便的统计出用户数据表的大小,包括记录总数和空间占用情况,非常实用,在SqlServer ...

  2. OC基础--分类(category) 和 协议(protocol)

    OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...

  3. MVC学习Day02之校验

    MVC校验有两种方法: 方法一:自己动手写js---------略 方法二: l在View的页面中,首先指定页面强类型@model 类型 l使用Html.***For(model=>model. ...

  4. 在Eclipse 中安装插件 Activiti

    (1)在eclipse中菜单help->Install New software中,点击add (2)输入要安装的插件的名字和路径 Name:Activiti BPMN 2.0 designer ...

  5. Freemarker-数字默认格式化问题

    freemarker在解析数据格式的时候,默认将数字按3位来分割 例如1000被格式化为1,000 这样做看似美观,但在实际操作时候会带来问题.例如我一个页面有一个元素,该元素的值由后台绑定且超过10 ...

  6. Freemarker-标签使用

     FreeMarker标签使用  FreeMarker模板文件主要有4个部分组成 1.文本,直接输出的部分 2.注释,即<#--...-->格式不会输出 3.插值(Interpolatio ...

  7. 【CSU 1556】Pseudoprime numbers

    题 Description Jerry is caught by Tom. He was penned up in one room with a door, which only can be op ...

  8. yii2图片上传

    yii2利用自带UploadedFile上传图片 public static function uploadFile($name) { $uploadedFile = UploadedFile::ge ...

  9. Centos目录结构详细版

    使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的 ...

  10. shared_ptr<> reset

    // std_tr1__memory__shared_ptr_reset.cpp // compile with: /EHsc #include <memory> #include < ...