我的代码在同一个项目中的两个单独的源文件中。我试图将其中一个方法调用到另一个方法中,但它不断抛出错误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;
}
}
我称这个方法错了吗?
答案 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”的Person
,new
运算符是您的首选武器:Person p = new Person("Hello", "World");
。