2014-02-12 3 views
0

У меня есть код в двух отдельных исходных файлах в том же проекте. Я пытаюсь вызвать метод из одного из них в другой, но он продолжает бросать ошибку 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(); 
    } 
} 

второго класса-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

Вы не вызываете конструктор 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) как конструктор класса.

0

попробовать это:

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

in main(): Person p = new Person ("f name", "l name"); – Arvind

0

Существует всегда стандартный конструктор, еще вам придется позвонить

new Person(); 

или использовать конструктор с вами параметры Имя и фамилия, как:

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

Как сказано в сообщении об ошибке - нет способа Person() в SchoolClasses. Если вы хотите создать экземпляр Person с именем «Hello World», то вашоператор - ваше оружие по выбору: Person p = new Person("Hello", "World");.

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. Вы должны подумать, что именно вы пытаетесь сделать с 2 классами.

+0

Как я должен написать свою публичную Личность? написав его, как я это сделал без типов возврата, я не могу указать как имя, так и фамилию. У меня есть это теперь как public Person (firstName lastName), потому что, когда я пытаюсь добавить запятую, он сокращает ее после запятой и не будет продолжать. – user3301604

+0

@ user3301604 - У вас не должно быть типа возвращаемого значения для конструктора, но вам нужно иметь тип данных для параметров в конструкторе. 'public Person (String firstName, String lastName)' как указано в ответе выше. – SudoRahul

Смежные вопросы