一、final类

描述:

  • 'final'修饰的类不能被继承,没有子类。
  • 例如,我们是无法写一个类去继承String类,然后对String类型扩展的,因为API中已经将String类定义为'final'的了。

示例:

public final class Person {
}
/*
以下代码编译报错
class Student extends Person{
}
*/

二、final方法

描述:

  • 'final'修饰的方法可以被子类继承,但是不能被子类重写
  • 例如,每个类都是Object类的子类,继承了Object中的众多方法,在子类中可以重写toString方法、equals方法等,但是不能重写getClass方法、wait方法等,因为这些方法都是使用fianl修饰的。

示例:

public class Person {
public final void print() {
}
} class Student extends Person {
/*
以下代码编译报错
public void print() {
}
*/
}

三、常量

描述:

  • 'final'修饰的变量表示常量只能被赋值一次,赋值后值不能再被改变。

注意:

  1. 修饰形式参数时,因为在调用方法传参的时候会赋值,所以不能在方法体里再赋值。

    public class Person {
    public void print(final int num) {
    /*
    以下代码编译报错
    num = 1;
    */
    }
    }
  2. 修饰成员变量时,可以选择在声明的同时赋值,或在匿名代码块中赋值 ,或在构造器中赋值(类中出现的所有构造器都要写)。

    public class Person {
    Person() {
    num = 1;
    } Person(int num) {
    this.num = num;
    } private final int num;
    }
  3. 修饰静态变量时,可以选择在声明的同时赋值,或在静态代码块中赋值 。

    public class Person {
    static {
    INT_NUM = 1;
    }
    /* 静态常量命名规范为:全部字母大写,单词用下划线分隔。 */
    private static final int INT_NUM;
    }
  4. 修饰引用变量时,不能改变引用保存的对象内存地址,但可以改变对象的属性值。

    public class Person {
    
        private int age;
    
        public int getAge() {
    return age;
    } public void setAge(int age) {
    this.age = age;
    } public static void main(String[] args) {
    final Person person = new Person();
    person.setAge(1);
    person.setAge(2);
    person.setAge(3);
    /*
    以下代码编译报错
    person = new Person();
    */
    }
    }

Java基础语法:final修饰符的更多相关文章

  1. java基础 关于final修饰符

    final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量 ...

  2. Java基础——protected访问修饰符探讨

    Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的子孙类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: packa ...

  3. Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  4. 26.Java基础_状态修饰符

    状态修饰符: final(最终态),static(静态) final关键字: 修饰类: 修饰局部变量: static关键字: 修饰变量:   修饰函数:

  5. Java基础-被final修饰的引用变量的指向

    final修饰的引用变量一旦初始化赋值之后就不能再指向其他的对象,那么该引用变量指向的对象的内容可变吗?看下面这个例子: public class Test { public static void ...

  6. JAVA_SE基础——42.final修饰符

    高手勿喷~ final关键字可用于修饰类.变量和方法,它有"这是无法改变的"或者"最终"的含义,因此被final修饰的类.变量和方法将具有以下特征: 1.fin ...

  7. Java学习——使用final修饰符

    package Pack1; import java.awt.*; import java.applet.*; class ca { static int n = 20; final int nn; ...

  8. as3 中 final 修饰符

    现在,在ActionScript 3.0的修饰符中,只有final修饰符没有介绍.之所有放在这里介绍,是因为final修饰符只与继承有关,指定一个方法不能被重写或一个类不能被继承. 一般来说,当用fi ...

  9. JAVA基础语法——标识符、修饰符、关键字(个人整理总结)

    JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1    什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...

  10. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...

随机推荐

  1. [译]Rxjs&Angular-退订可观察对象的n中方式

    原文/出处: RxJS & Angular - Unsubscribe Like a Pro 在angular项目中我们不可避免的要使用RxJS可观察对象(Observables)来进行订阅( ...

  2. 深入浅出Java线程池:源码篇

    前言 在上一篇文章深入浅出Java线程池:理论篇中,已经介绍了什么是线程池以及基本的使用.(本来写作的思路是使用篇,但经网友建议后,感觉改为理论篇会更加合适).本文则深入线程池的源码,主要是介绍Thr ...

  3. Linux系统编程【3.1】——编写ls命令

    ls命令简介 老规矩,直接在终端输入:man ls (有关于man命令的简介可以参考笔者前期博客:Linux系统编程[1]--编写more命令) 可以看到,ls命令的作用是显示目录中的文件名,它带有可 ...

  4. Nacos学习与实战

    1. 什么是Nacos 官网:https://nacos.io/zh-cn/index.html Nacos是阿里巴巴集团开源的项目,Nacos 致力于帮助您发现.配置和管理微服务. Nacos提供了 ...

  5. K8s Deployment YAML 名词解释

    Deployment 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义 (declarative) 方法,用来替代以前的 ReplicationControlle ...

  6. While & For 循环

    While 循环 可以将 While 循环称为 "条件循环" While 循环语法 # 条件为 true 就执行循环体代码,条件变为 false 循环结束 while 条件 do ...

  7. 3.Work Queues

    标题 : 3.Work Queues 目录 : RabbitMQ 序号 : 3 var channel1 = _connection.CreateModel(); channel1.BasicQos( ...

  8. 爬虫入门三 scrapy

    title: 爬虫入门三 scrapy date: 2020-03-14 14:49:00 categories: python tags: crawler scrapy框架入门 1 scrapy简介 ...

  9. git命令简写配置

    在使用git工具时,有些命令比较常用,为了加快输入速度,可以自定义一些简写配置,如下所示: git st # git status git ci # git commit git br # git b ...

  10. redis运维与开发笔记