Java 类方法

类方法是在类中声明的方法。它们执行特定的操作,并可以访问、修改类属性。

创建(声明)Java 类方法

类方法声明与用户定义方法声明类似,只不过类方法是在类中声明的。

通过指定访问修饰符来声明类方法。后跟 返回类型、方法名称参数列表

语法

使用以下语法进行声明Java 类方法:

public class class_name {
  modifier returnType nameOfMethod(Parameter List) {
    // 方法体
  }
} 

上面显示的语法包括 -

  • modifier- 访问修饰符,它定义了访问权限方法的类型,可以选择使用。

  • returnType - 返回类型,返回 类方法的数据类型。

  • nameOfMethod - 这是方法名称。方法签名由方法名称和参数列表组成。

  • Parameter List- 参数列表,它是类型、顺序和参数方法的参数数量。这些是可选的,方法可以包含零个参数。

  • 方法主体 - 方法主体定义方法对语句执行的操作。

示例

这里是上面定义的方法minimum()的源代码。此方法采用两个参数 n1n2 并返回两者之间的最小值 -

class Util {
  /** 该方法返回两个数字之间的最小值 */
  public int minimum(int n1, int n2) {
    int min;
    if (n1 > n2)
      min = n2;
    else
      min = n1;

    return min;
  }
} 

访问Java类方法

要访问类方法(公共类方法),您需要先创建一个对象,然后使用该对象( .) 运算符可以访问类方法。

语法

使用以下语法访问 Java 公共类方法:

object_name.method_name([parameters]); 

示例

以下是该示例演示如何定义类方法以及如何访问它。在这里,我们创建了一个 Util 类的对象,并调用其 minimum() 方法来获取最小值给定两个数字 -

package com.yxjc123;

class Util {
   public int minimum(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}
public class Tester {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;

      Util util = new Util();
	  
      int c = util.minimum(a, b);
      System.out.println("Minimum Value = " + c);
   }
} 

输出

Minimum value = 6 

Java 类方法中的 this 关键字

this 是 Java 中的关键字,它是用作对当前类的对象的引用,用于实例方法或构造函数。使用this您可以引用类的成员,例如构造函数、变量和方法。

注意 - 关键字this 仅在实例方法或构造函数中使用

一般来说,关键字 this 用于 

  • 区分构造函数或方法中具有相同名称的实例变量和局部变量。

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
} 
  • 调用一个类中其他构造函数的类型(参数化构造函数或默认构造函数)。这称为显式构造函数调用。

class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
} 

示例:在 Java 类方法中使用 this 关键字

这里是一个使用 this 关键字的示例 访问类的成员。将以下程序复制并粘贴到名为 Tester.java 的文件中。

package com.yxjc123;

public class Tester {
   //实例变量num
   int num = 10;
	
   Tester() {
      System.out.println("This is an example program on keyword this");	
   }

   Tester(int num) {
      //调用默认构造函数
      this();
      
      //将局部变量num赋值给实例变量num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to yxjc123");
   }
      
   public void print() {
      //局部变量num
      int num = 20;
      
      //打印局部变量
      System.out.println("value of local variable num is : "+num);
      
      //打印实例变量
      System.out.println("value of instance variable num is : "+this.num);
      
      //调用类的greet方法
      this.greet();     
   }
   
   public static void main(String[] args) {
      //实例化类
      Tester obj1 = new Tester();
      
      //调用打印方法
      obj1.print();
	  
      // 通过参数化构造函数将新值传递给 num 变量
      Tester obj2 = new Tester(30);
      
      //再次调用打印方法
      obj2.print(); 
   }
} 

输出

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to yxjc123
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to yxjc123 

Public 和静态类方法

类方法有publicstatic类方法两种。 公共类方法是通过对象访问的,而静态类方法是在没有对象的情况下访问的。您可以直接访问静态方法。

示例

以下示例演示公共类方法和静态类方法之间的区别:

public class Main {
  //创建静态方法
  static void fun1() {
    System.out.println("fun1: This is a static method.");
  }

  // 创建公共方法
  public void fun2() {
    System.out.println("fun2: This is a public method.");
  }

  // main() 方法
  public static void main(String[] args) {
    //通过类访问静态方法
    fun1();

    // 创建Main类的对象
    Main obj = new Main();
    //通过对象访问公共方法
    obj.fun2();
  }
} 

输出

fun1: This is a static method.
fun2: This is a public method. 

finalize( ) 方法

可以定义一个在垃圾收集器最终销毁对象之前调用的方法。该方法称为finalize( ),它可用于确保对象干净地终止。

例如,您可以使用finalize( ) 来确保打开一个对象该对象拥有的文件已关闭。

要将终结器添加到类中,只需定义finalize( ) 方法即可。 Java 运行时每当要回收该类的对象时都会调用该方法。

在 Finalize( ) 方法内,您将指定在销毁对象之前必须执行的操作。

finalize( ) 方法具有以下一般形式 -

protected void finalize( ) {
   //这里是最终代码
} 

这里,关键字 protected 是一个说明符,可防止在其类外部定义的代码访问 Finalize( )。

这意味着你无法知道finalize()何时或是否会被执行。例如,如果您的程序在垃圾回收发生之前结束,则 Finalize( ) 将不会执行。