package object;
/*
* final关键字代表最终、不可改变的。常量继承
*
* 从封装中理解final:封锁变量使为常量
*
* 从继承中理解final:最终的,不再被继承
* 方法也不能被重写了,没子类了
*
*
常见四种用法:
1. 可以用来修饰一个类(final修饰类表示该类不能被继承。)
2. 可以用来修饰一个方法(final修饰方法表示该方法不能被重写)
3. 还可以用来修饰一个局部变量
4. 还可以用来修饰一个成员变量(final修饰变量表示该变量的值不能被修改。)
*/
public class Final {
}
//修饰类(最终的类)
final class TestFinal
{
// 1.该类不能被继承(俗称“断子绝孙类”),但是该类可以有父类。
public void TestMethod()
{
}
// 2.所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载,
}
//class Son extends TestFinal
//{
// //该类不能被继承(俗称“断子绝孙类”),但是该类可以有父类。
//}
class Test01
{
// public void TestMethod()
// {
// int i=i;
// 2.所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载,
// }
public void TestMethod(int i)
{
i=0;//可以重载
}
}
//修饰方法(最终方法)
//2.所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载)
class Test02
{
final public void TestMethod02()
{
System.out.println("");
}
} //可以被继承,但是方法不能重写,但是可以重载
//最终方法与最终类共同点:创建的类都不能被重写,但是能重载
//不同点:一个可以继承,一个不可以继承
class Test03 extends Test02
{
public void TestMethod02(int i)
{
}
}
//前言中曾提到过,被final修饰的变量,又被称为自定义常量。
//而在java中,常量的意思是不会被改变的量。
//所以,被final修饰的变量即自定义常量是不能被改变的(只能被赋值一次,后续不能更改!)
/*
* 在java中,共有两类数据类型:基本数据类型和引用数据类型。
当final修饰基本数据类型的变量,则意味着这个变量只能被赋值一次;
*/
/*
* 当final修饰引用数据类型(类、接口、数组)的变量,
* 则引用变量所指向的对象(即该变量所存放的地址值)不能更改,
* 但是该对象的内容(即地址值上存储的内容)可以更改!!
*/
class Test09{
public void Arrey( final int Arrey[])
{
Arrey[0]=0;
// Arrey=null;
}
}
//修饰变量(成员与局部)(常量)
//1) final修饰成员变量:该成员变量必须在其所在类对象创建之前被初始化(且只能被初始化一次)。
class Test04
{ //三种初始化方法,但只能初始化一次(没有默认初始化)
final int number01=111;//1.显式初始化
final int number02;
final int number03;
//final int number04;
public Test04()
{
number02=222;//构造器初始化
}
{
number03=333;//代码块初始化
}
//原因:因为在new一个实例的时候就需要加载
//这时在方法中初始化就报错
//但是可以放在参数中
public void tesst(final int number05)
{
//number04=444;
}
2) final修饰局部变量:该变量必须在使用之前赋值,且只能被赋值一次!
public void Test06()
{
final int number09=0;
System.out.print(number09);
}
public void Test07(final int number09)
{
System.out.print(number09);
}
} //全局变量
class Test00
{
static final int number09=0;//全局变量
}
java final关键字
最新推荐文章于 2024-10-11 17:30:36 发布