Java-Final类

时间:2020-02-23 14:36:35  来源:igfitidea点击:

在本教程中,我们将学习Java编程语言的Final类。

在先前的教程中,我们了解了最终变量和最终方法。

因此,我们知道,如果要创建一个常量,则可以声明一个最终变量。
而且,如果我们想防止方法重写,那么可以定义一个最终方法。

Final类

如果我们想防止某个类被继承,则可以将该类设置为"最终"。

语法

final class MyClass {
  //some code goes here...
}

其中,MyClass是类的名称,由于我们使用的是final关键字,因此无法继承。

注意!如果一个类被声明为" final",则其所有方法都隐式声明为final。

我们仍然可以实例化final类的对象。

例子1

在以下示例中,我们将Hello类声明为final

//this class can't be inherited
//as we are using final
final class Hello {
  void greetings() {
    System.out.println("Hello World");
  }
}

//inheriting Hello class is not allowed
/**
 * class Awesome extends Hello {
 *   //some code goes here...
 * }
 */

//main class
public class Example {
  public static void main(String[] args) {
    //create an object
    Hello obj = new Hello();

    //calling method
    obj.greetings();
  }
}
$javac Example.java 
$java Example
Hello World

如果我们尝试继承Hello类,则会收到以下错误。

$javac Example.java 
Example.java:10: error: cannot inherit from final Hello
 class Awesome extends Hello {
                       ^
1 error

示例2

在以下示例中,我们有一个不能继承的最终类Box

我们还有一个GiftBox类,它使用Box类的方法。

我们将Box类的对象传递给GiftBox类,以利用其getVolume()方法的帮助。

有关方法的更多信息,请检查传递的对象作为方法教程的参数。

//this class is declared as final
//so it can't be inherited
final class Box {
  public double getVolume(double length, double width, double height) {
    return length * width * height;
  }
}

class GiftBox {

  //member variables
  private double length;
  private double width;
  private double height;
  
  //constructor with parameters
  GiftBox(double length, double width, double height) {
    
    //initialising the variables
    this.length = length;
    this.width = width;
    this.height = height;
  }

  //this method takes Box object as argument
  //and using the Box getVolume method
  //it prints the volume of the GiftBox
  public void printVolume(Box bObj) {
    double volume = bObj.getVolume(this.length, this.width, this.height);
    System.out.println("Volume of the GiftBox: " + volume);
  }
}

//main class
public class Example {
  public static void main(String[] args) {

    //instantiate object
    Box bObj = new Box();
    GiftBox obj = new GiftBox(5, 4, 3);

    //output
    obj.printVolume(bObj);
  }
}
$javac Example.java 
$java Example
Volume of the GiftBox: 60.0