首页 > 解决方案 > 如何从包含构造函数的类中调用方法?

问题描述

我最近了解到调用包含构造函数的类意味着它只会调用构造函数,但是如果我想从该类中调用方法Main怎么办?

假设我有一个看起来像这样的课程

public class Student {
    private String lastname, firstname, course;
    private int[] grades;
    static int total;

    public Student(String lastname, String firstname, String course, int[] grades) {
        this.lastname = lastname;
        this.firstname = firstname;
        this.course = course;
        this.grades = grades;
    }

    public boolean hasFailingGrade() {
        //statements
        }
        return failed;
    }

    public void showDetails() {
        //statements
    }
}

在 中Main,我想创建一个实例Student并调用showDetails(),但是,该实例仅引用构造函数。我如何调用该方法Student?我四处搜索,但只找到有关如何调用构造函数的文章。

这是我的Main班级的样子

import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;

public class MainApp {

    public static void main(String args[]) throws FileNotFoundException {
        String firstname, lastname, course;
        int[] grades = new int[5];
        ArrayList<Student> list = new ArrayList<Student>();

        Scanner in = new Scanner(new File("person.txt"));
        Scanner in2 = new Scanner(new File("person.txt"));

        while(in.hasNext()) {
            lastname = in.nextLine();
            firstname = in.nextLine();
            course = in.nextLine();
            for (int i = 0; i < 4; i++)
                grades[i] = in2.nextInt();

            list.add(new Student(lastname, firstname, course, grades));
            
        }
         Student studentClass = new Student();
         Student.showDetails();

    }
}

标签: javaclassconstructor

解决方案


我认为您对实例化对象的含义略有误解。当您调用 new Student() 时,您正在实例化 Student 类的一个新实例。此实例化过程涉及对构造函数的初始调用。将构造函数方法视为一个函数,它设置您的类按预期工作所需的一切。

但是,一旦您实例化了 Student 的实例,您就可以访问该实例中可用的所有公共方法和字段。在您的示例中,您的 Student 类有一个名为的公共方法showDetails()

所以你可以在 main 中写这样的东西:

Student student = new Student("Smith", "John", "English", [95, 88, 73]);
student.showDetails();

通过创建类的实例,您可以访问该类的所有公共方法。

希望这能消除你的困惑!


推荐阅读