调用方法时出错

时间:2014-02-12 12:35:52

标签: java

我的代码在同一个项目中的两个单独的源文件中。我试图将其中一个方法调用到另一个方法中,但它不断抛出错误cannot find symbol - method Person()

主要课程 - SchoolClasses

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

class SchoolClasses {
    public static void main(String[] args) throws java.lang.Exception {
        Person();
    }
}

第二类人

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

public class Person extends SchoolClasses {
    String firstName = null;
    String lastName = null;

    public void Person(String firstName, String lastName) {
        firstName = firstName;
        lastName = lastName;

    }

    @Override
    public String toString() {
        return lastName + "," + firstName;
    }
}

我称这个方法错了吗?

5 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。我已经在适用的地方添加了内联评论。

public Person(String firstName, String lastName) // Constructor shouldn't have a return type
{
    // Use this keyword because otherwise firstName = firstName; just shadows your instance variables
    this.firstName = firstName; 
    this.lastName = lastName;
}

您还需要在Person方法中创建这样的新main()对象,因为您的Person类中没有默认构造函数。

Person person = new Person("firstName", "lastName"); // Because the constructor in your class takes 2 parameters

作为旁注,我真的看不到使用Person扩展SchoolClasses。您应该重新考虑一下您正在尝试使用这两个类。

答案 1 :(得分:0)

您未在Person中正确调用main构造函数。你想要这个:

Person person = new Person("First", "Last");

但是,类中的Person构造函数不应该有void关键字才能将其视为构造函数:

public Person(String firstName, String lastName)
  {
    this.firstName = firstName;
    this.lastName = lastName;
  }

在那里有void,编译器不会将Person(String firstName, String lastName)解释为类的构造函数。

答案 2 :(得分:0)

试试这个:

public Person(String firstName, String lastName)
{
    this.firstName = firstName;
    this.lastName = lastName;
}

答案 3 :(得分:0)

总有一个标准的构造函数, 你仍然需要打电话

new Person();  

或使用带有参数First和Lastname的构造函数:

new Person("first","last");

答案 4 :(得分:0)

正如错误消息所述 - Person()中没有方法SchoolClasses。如果要实例化名为“Hello World”的Personnew运算符是您的首选武器:Person p = new Person("Hello", "World");