JAVA_SE基础——42.final修饰符

高手勿喷~

final关键字可用于修饰类、变量和方法,它有“这是无法改变的”或者“最终”的含义,因此被final修饰的类、变量和方法将具有以下特征:

1.final修饰的类不能被继承。实例1

2.final修饰的方法不能被子类重写。实例2

3.fianl修饰的变量(成员变量和局部变量)是常量,只能被赋值一次。实例3

4.fianl修饰成员变量的时候,一定要在定义变量的同时赋予一个初始化值。实例4

实例1

final class A{//使用final关键字修饰A类

}

class B extends A{//B类继承A类

}
class Demo1
{
	public static void main(String[] args)
	{
		B b = new B();//创建B类的实例对象
	}
}

运行结果:

实例2

class A{//定义A类
	public final void shout(){}//使用final关键字修饰shout()方法
}

class B extends A{//B类继承A类
	public void shout(){}//重写A类的shout()方法
}
class Demo1
{
	public static void main(String[] args)
	{
		B b = new B();//创建B类的实例对象
	}
}

运行结果:

实例3

class Demo1 {
	public static void main(String[] args) {
		final int x = 10 ;//第一次可以赋值
		x=5;	//再次赋值会报错
	}
}

运行结果:

实例4

class A{//定义A类
	final String name ;//使用final关键字修饰name属性

	public void introduce(){//定义introduce()方法,打印name
		System.out.println("name = "+name);
	}
}
class Demo1 {

	public static void main(String[] args) {
		A a = new A();//创建A类的实例对象
		a.introduce();//调用A类的introduce()方法
	}
}

运行结果:

给成员变量赋值的话就不会报错。

class A{//定义A类
	final String name = "江海豪";//使用final关键字修饰name属性

	public void introduce(){//定义introduce()方法,打印name
		System.out.println("name = "+name);
	}
}
class Demo1 {

	public static void main(String[] args) {
		A a = new A();//创建A类的实例对象
		a.introduce();//调用A类的introduce()方法
	}
}

运行结果:

交流学习企鹅:654249738

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 06:02:51

JAVA_SE基础——42.final修饰符的相关文章

java基础 关于final修饰符

final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量. 什么时候用final修饰呢? 当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值取一个名字,而这些值不需要改变,所以加上final修饰.

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

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢. 栈的优势是

final修饰符

final修饰变量时,表示该变量一旦获得了初始值就不可改变, 由于final变量获得初始值之后不能被重新赋值,因此final修饰成员变量和修饰局部变量时有一定的不同. 5.4.1final成员变量 成员变量是随类初始化或对象初始化而初始化的, 当类初始化时,系统会为该类的类变量分配内存,并分配默认值: 当创建对象时,系统会为该对象的实例变量分配内存,并分配默认值. java语法规定:final修饰的成员变量必须由程序员显式地指定初始值 归纳: final修饰的类变量,实例变量 能指定初始值的地方

C# 基础(一) 访问修饰符、ref与out、标志枚举等等

C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序集或其他程序集都可以访问此成员 private:私有类型,同一类里或结构里才可以访问此成员 protected:保护类型,同一类里或者派生类中才可以访问此成员 internal:内部类型,只有在同一程序集才可以访问此成员 访问性不一致:子类的访问权限不能比父类高.防止暴露父类的信息.. 二.stat

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

final修饰符,多态,抽象类,接口

1.final修饰符 final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋值.因为这个变量其实常量 2.多态 同一个对象(事物),在不同时刻体现出来的不同状态. 举例:        猫是猫,猫是动物.        水(液体,固体,气态). 多态的前提: A:要有继承关系.        B:要有方法重写.            其实没有也是可以的,但是如果没有这个就没有意义.              

static修饰符与final修饰符

■ static修饰符与final修饰符: ★ static修饰符: 1. 修饰的对象: 类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法]) 2. 静态属性的特点: 1. 静态变量被所有对象共享 2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关 3. 可以直接被类名调用 3. 静态方法的特点: 1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有) 2. 静态方法无法访问实例变量 3. 静态方法可以访问静态变量

final修饰符—不可变

final 修饰符 修饰类 不可以有子类 修饰变量 变量一旦获得初始值就不可改变,不能被重新赋值 成员变量:初始值必须有程序员显式设置,系统不会对其隐式初始化 类变量:静态初始化块 | 声明该类变量时      实例变量:非静态初始化块 | 声明该实例变量时 | 构造器中      局部变量:初始值必须有程序员显式设置,系统不会对其隐式初始化                 定义变量时指定 | 后面代码中指定                 形参变量由传入参数值来完成初始化,故不能被赋值    

final修饰符的难点记录

今天看到了final字段这块,把不会的或者难点记录下来. 第一,空白final. 书上说的有点绕,说空白final更灵活.但之前又说过final变量必须进行初始化,这是什么意思呢,二者难道有冲突吗? 其实空白final的核心就是:构造器赋值. <script src="https://code.csdn.net/snippets/401447.js"></script> 第二,static final 同 final 的区别. 以前我提过,static字段只会初