Java基础语法:final修饰符
一、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'修饰的变量表示常量,只能被赋值一次,赋值后值不能再被改变。
注意:
修饰形式参数时,因为在调用方法传参的时候会赋值,所以不能在方法体里再赋值。
public class Person {
public void print(final int num) {
/*
以下代码编译报错
num = 1;
*/
}
}
修饰成员变量时,可以选择在声明的同时赋值,或在匿名代码块中赋值 ,或在构造器中赋值(类中出现的所有构造器都要写)。
public class Person {
Person() {
num = 1;
} Person(int num) {
this.num = num;
} private final int num;
}
修饰静态变量时,可以选择在声明的同时赋值,或在静态代码块中赋值 。
public class Person {
static {
INT_NUM = 1;
}
/* 静态常量命名规范为:全部字母大写,单词用下划线分隔。 */
private static final int INT_NUM;
}
修饰引用变量时,不能改变引用保存的对象内存地址,但可以改变对象的属性值。
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修饰符的更多相关文章
- java基础 关于final修饰符
final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量 ...
- Java基础——protected访问修饰符探讨
Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的子孙类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: packa ...
- Java中的final修饰符
1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...
- 26.Java基础_状态修饰符
状态修饰符: final(最终态),static(静态) final关键字: 修饰类: 修饰局部变量: static关键字: 修饰变量: 修饰函数:
- Java基础-被final修饰的引用变量的指向
final修饰的引用变量一旦初始化赋值之后就不能再指向其他的对象,那么该引用变量指向的对象的内容可变吗?看下面这个例子: public class Test { public static void ...
- JAVA_SE基础——42.final修饰符
高手勿喷~ final关键字可用于修饰类.变量和方法,它有"这是无法改变的"或者"最终"的含义,因此被final修饰的类.变量和方法将具有以下特征: 1.fin ...
- Java学习——使用final修饰符
package Pack1; import java.awt.*; import java.applet.*; class ca { static int n = 20; final int nn; ...
- as3 中 final 修饰符
现在,在ActionScript 3.0的修饰符中,只有final修饰符没有介绍.之所有放在这里介绍,是因为final修饰符只与继承有关,指定一个方法不能被重写或一个类不能被继承. 一般来说,当用fi ...
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...
随机推荐
- 在线工具生成接入信息mqtt.fx快速接入阿里云
在线工具生成接入信息mqtt.fx快速接入阿里云 在使用阿里云获取的三元组信息进行接入的时候,往往需要加密生成接入信息之后才能进行接入,因此我根据阿里云提供的加密工具实现了一个阿里云物联网平台mqtt ...
- 秒啊,速来get这9个jupyter实用技巧
1 简介 jupyter notebook与jupyter lab作为广受欢迎的ide,尤其适合开展数据分析相关工作,而掌握它们相关的一些实用技巧,势必会大大提升日常工作效率.而今天我就来给大家介绍9 ...
- 【C#】对两张图片进行矩阵运算会怎么样?
对两张图片进行矩阵运算会怎么样? 在学习<线性代数>的矩阵运算时,突然想到图片也可以算是一种矩阵,那么对图片进行矩阵的运算会出现什么样的效果呢?为了满足好奇,便用C#写了个对图片进行矩阵运 ...
- Codeforces Round #684 (Div. 2)【ABC1C2】
比赛链接:https://codeforces.com/contest/1440 A. Buy the String 题解 枚举字符串中 \(0\) 或 \(1\) 的个数即可. 代码 #includ ...
- Codeforces Round #651 (Div. 2) E. Binary Subsequence Rotation(dp)
题目链接:https://codeforces.com/contest/1370/problem/E 题意 给出两个长为 $n$ 的 $01$ 串 $s$ 和 $t$,每次可以选择 $s$ 的一些下标 ...
- CS144学习(1)Lab 0: networking warmup
CS144的实验就是要实现一个用户态TCP协议,对于提升C++的水平以及更加深入学习计算机网络还是有很大帮助的. 第一个Lab是环境配置和热身,环境按照文档里的配置就行了,前面两个小实验就是按照步骤来 ...
- Java RMI 实现一个简单的GFS(谷歌文件系统)——介绍篇
本系列主要是使用Java RMI实现一个简单的GFS(谷歌文件系统,google file system),首先整体简单介绍下该项目. [为了更好的阅读以及查看其他篇章,请查看原文:https://w ...
- ++i和i++的区别
它们两个的数值变化的区别,我这里就不多说了 这里主要说明两者在效率上的区别 (1)首先如果是自带的数据类型,比如int型,++i和i++,编译器的实现方式是相同的,两者并没有效率上的区别,虽然也有副本 ...
- Single Round Math sdut3260高精度除以低精度
做高精度除法,从高位开始除..高位除剩下的我们就*10扔给低一位处理,最终余数是在最低位取模得到的 高精除以高精,我们可以这么做,让除数在后面补零,刚好小于被除数,作若干次减法,减的次数加到商里面 然 ...
- chmod +x vs chmod 755
chmod +x vs chmod 755 What is the difference between "chmod +x" and "chmod 755"? ...