写点什么

Java 基础 | 关于 Final Static Abstract 修饰需要注意的地方

作者:Java-fenn
  • 2022 年 9 月 13 日
    湖南
  • 本文字数:2565 字

    阅读完需:约 8 分钟

Java 概念:在 Java 编程语言中,final 关键字是指在一些情况下用来定义一个只能被赋值一次的变量。因此一旦一个 final 变量被赋值,它的值就再也不能改变。而被 final 定义的类不能被继承。被 final 定义的方法则不能被重写。


在 Java 中,final 是一个关键字,它只保证基本类型的不变性。并且保证变量只被赋值一次。如果一个对象是可变的,我们可以改变它的内容,即使它被定义为 final。在本节中,我们将详细讨论 final 关键字的使用。


1.Final 修饰符关键字 final 是一个非访问修饰符。如果要使用 final 关键字,必须在变量、方法和类之前指定它。它限制我们访问变量、方法和类。注意,最后的方法不能继承和重写。如果要存储在程序执行过程中不需要更改的值,则必须使用 final 关键字。通常,它用于赋常数值。例如,值 PI=3.14, g=9.8。


在处理最后一个关键词时,要记住以下几点:


在声明最后一个变量时初始化它。一个空白的 final 变量可以在实例初始化块或构造函数内部初始化。一个空白的最终静态变量可以在静态块中初始化。让我们讨论一下 final 关键字的使用。


// a final variable


final double PRICE;


final int COUNT = 5;


// a final static variable PI


static final double PRICE;


static final double PI = 3.141;// Java Program to demonstrate Final// with for-each Statement


// Main classclass GFG {


// Main driver methodpublic static void main(String[] args){
// Declaring and initializing // custom integer array int arr[] = { 1, 2, 3 };
// final with for-each statement // legal statement for (final int i : arr) System.out.print(i + " ");}
复制代码


}注意:


  1. 修饰数据


声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。


对于基本类型,final 使数值不变;对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。final int x = 1;// x = 2; // cannot assign value to final variable 'x'final A y = new A();y.a = 1;2. 修饰方法


声明方法不能被子类重写。


private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。


  1. 修饰类


声明类不允许被继承,声明为 final 的类称为 final class。注意,不能继承 final 类。final 类有两种用途,即防止继承和使类不可变。例如,所有包装器类都是 final 类,而 String 类是不可变类。


2.Static 修饰符 Java 是一种流行的编程语言,用于生成软件程序和应用程序,它开发于 90 年代中期。Java 与所有现代操作系统兼容。它的流行之处在于它提供了某些条款来确保应用程序范围内的安全性和可重用性,就像静态成员一样。


在 Java 中,static 关键字主要用于确保和启用系统内存的有效管理以及公共属性的可重用性。我们可以对变量、方法、嵌套类以及代码块使用 static 关键字。Static 在 Java 中用作非访问修饰符。Static 关键字指示特定成员属于类型本身,而不是该特定类型的个别实例。这意味着只能创建该静态成员的单个实例,并且在类的所有实例之间共享。


要声明静态成员,无论它是块、变量、方法还是嵌套类,都需要在成员前面加上关键字 static。当将成员声明为 static 时,可以在其任何类对象创建之前访问它,因为它独立于其类对象。


在下面的例子中,我们将创建一个静态方法,并看看如何在不引用其类的情况下调用它:


class Main // declaring a class name called staticTest{// Declaring a static method belowpublic static void myStaticmethod(){System.out.println("Hello, I was called from static method.");}public static void main(String[] args ){// Calling the static method without any object referencemyStaticmethod();}}注意:为什么 main 方法在 Java 是静态的?


Java 中的 main 方法是静态的,因为我们不要求对象能够调用 main 方法。


如果它是一个非静态方法,那么我们首先需要 JVM (Java Virtual Machine)来调用类对象,这将不是一个占用内存的进程,因为这样做将需要额外的内存。


我们可以对所有对象通用的任何属性使用静态变量。例如,如果我们有一个名为 Student 的类,那么所有 Student 对象将共享学院名称的相同属性,在这种情况下可以声明为静态变量。当静态变量的值独立于其类对象时,也可以使用静态变量。


存在继承的情况下,初始化顺序为:


父类(静态变量、静态语句块)子类(静态变量、静态语句块)父类(实例变量、普通语句块)父类(构造函数)子类(实例变量、普通语句块)子类(构造函数)3.Abstract 修饰符 ​如果一个方法只有声明而没有实现,也就是说,方法体中没有语句,那么它就被称为抽象方法。Java 中的抽象方法以 abstract 关键字作为前缀。抽象方法只是子类提供其实现的契约。抽象方法不指定任何实现。方法声明不包含任何大括号,并以分号结束。


可能需要一个类作为框架,为其他类提供特定的行为。子类提供它们的应用程序或特定于需求的行为,这些行为添加到现有框架的行为中。这样,就可以使用 abstract 关键字创建一个框架。抽象类不能实例化,但可以继承。子类必须实现基类中声明的抽象方法,否则必须声明为抽象。


abstract class OutlineProposal {


public abstract void DraftMemo();public void CalcCosts(){System.out.println("Costs");}}代码所示,OutlineProposal 是一个抽象类。它为派生自它的其他类定义了一个框架。DraftMemo()是在类 OutlineProposal 中声明的一个抽象方法。该方法的实现因类 OutlineProposal 派生的每个子类而异。


注意:抽象方法没有主体(实现),它们只有方法签名(声明)。继承抽象类的类实现了抽象方法。


如果一个非抽象(具体)类继承了一个抽象类,那么这个类必须实现这个抽象类的所有抽象方法。否则,具体类也必须声明为抽象类。


因为抽象方法只有签名,所以它需要在末尾有分号(;)。


以下是与抽象修饰符相关的方法的其他修饰符的各种非法组合:


abstract nativeabstract synchronizedabstract staticabstract privateabstract strictfp4.总结通过上面的教程,我们可以得出,Java 提供了一些特性和属性,静态和抽象,这些特性和属性使 Java 在使用时安全、安全和健壮。这些导致 Java 仍然是开发以安全性为主要关注点的系统的一个非常流行的选择。这也是为什么我现在仍然选择重新学 Java。

用户头像

Java-fenn

关注

需要Java资料或者咨询可加我v : Jimbye 2022.08.16 加入

还未添加个人简介

评论

发布
暂无评论
Java基础 | 关于Final Static Abstract修饰需要注意的地方_Java_Java-fenn_InfoQ写作社区