【问题标题】:How to call a method from a class that contains a constructor?如何从包含构造函数的类中调用方法?
【发布时间】:2021-10-17 16:01:22
【问题描述】:

我最近了解到调用包含构造函数的类意味着它只会调用构造函数,但是如果我想从 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();

    }
}

【问题讨论】:

  • “实例仅引用构造函数”到底是什么意思?一旦你引用了一个类的实例,你就可以使用该引用调用该类的成员函数。

标签: java class constructor


【解决方案1】:

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

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

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

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

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

希望这能消除您的困惑!

【讨论】:

  • 哦,谢谢!我不知道调用类最初会调用构造函数作为主函数,因为这是我第一次学习构造函数。我刚刚发现我遇到了问题,因为我的方法在 Main 中没有正确编写,无法正常工作。
猜你喜欢
  • 1970-01-01
  • 2016-05-31
  • 2015-10-01
  • 1970-01-01
  • 2016-02-05
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多