почему я получаю сообщение об ошибке «не могу найти символ»? - PullRequest
0 голосов
/ 29 мая 2020

Наследование. java файл


      package oops.Inheritance;

       public class Inheritance {

        public static void main(String[] args) {

        Teacher t=new Teacher("gopi");

        t.name="ravi";
        t.eat();
        t.walk();
        t.teach();
        Singer s=new Singer("rock");
        s.name="arjun";
        s.eat();
        s.walk();

        person p =new person("jack");
        //person p=t;//upcasting

        //Teacher t=(Teacher)p;//downcasting

        // boolean yo = t instanceof Teacher;//to fine whether t is is instance of teacher
        // System.out.println(t instanceof Teacher);//true
        // System.out.println(s instanceof Singer);//true
        // System.out.println(t instanceof person);//true
        // System.out.println(p instanceof Teacher);//flase



    }
}

Ошибка

D:\study files\java files\oops\Inheritance>javac Inheritance.java

Наследование. java: 5: ошибка: не удается найти символ

        Teacher t=new Teacher("gopi");
        ^

символ: учитель класса

расположение: класс наследование

наследование. java: 5: ошибка: не удается найти символ

    Teacher t=new Teacher("gopi");
                  ^

символ: класс учитель

расположение: наследование класса

наследование. java: 10: ошибка: не удается найти символ

    Singer s=new Singer("rock");
    ^

символ: класс Singer

расположение: наследование класса

Наследование. java: 10: ошибка: не удается найти символ

    Singer s=new Singer("rock");
                 ^

символ: класс Singer

расположение: класс Наследование

Наследование. java: 15: ошибка: не удается найти символ

    person p =new person("jack");
    ^

символ: класс человек

расположение: класс Наследование

Наследование. java: 15: ошибка: не удается найти символ

    person p =new person("jack");
                  ^

символ: класс человек

местоположение: класс Наследование

6 ошибок

человек. java


     package oops.Inheritance;



      public class person {

      protected String name;

        public person(String name){

        this.name=name;
        System.out.println("Inside person constructor");   
      }

      public void walk(){
      System.out.println("person"+name+"person is walking");
    }
      public void eat(){
      System.out.println("person"+name+"person is eating");
     }
      public static void laughing(){
      System.out.println("person is laughing");
         }

      }

Учитель. java


      package oops.Inheritance;

      public class Teacher extends person{//inheriting from person

      public Teacher(String name){

      super(name);//calls the constructor in the parent class

      System.out.println("Inside teacher constructor");   
      }

       public void teach(){
       System.out.println(name+"Teacher is teaching");
       }

       public void eat(){
       super.eat();//to access the parent class i.e, here person           class
       System.out.println("teacher"+name+"is eating");
         }
        }
       }

певец. java


       package oops.Inheritance;

       public class Singer extends person{//inheriting from person

       public Singer(String name){

        super(name);//calls the the constructor in parent class

        System.out.println("Inside singer constructor");   

      }

        public void sing(){
        System.out.println("Singer is singing");
    }

        public void eat(){
        System.out.println("teacher"+name+"is eating");
    }
}

Я запускаю эту программу в vscode последней версии. каждый раз, когда это работает, но когда я импортирую классы из другого пакета, я получаю вышеупомянутую ошибку.

Ответы [ 2 ]

1 голос
/ 19 августа 2020
• 1000 каталог (не в каталоге наследования) выполните следующие команды
PS E:\Java> javac inheritance/person.java    
PS E:\Java> javac inheritance/teacher.java  
PS E:\Java> javac inheritance/MainClass.java
PS E:\Java> java inheritance/Mainclass

Это решит вашу проблему

Happy Coding !!

1 голос
/ 29 мая 2020

Лучшее, что вы можете сделать, - это исправить настройку в Eclipse, чтобы она работала. Как только эта проблема решена, вам больше не нужно беспокоиться о том, как компилировать.

В любом случае, чтобы ответить на ваш вопрос:

Чтобы скомпилировать ваши файлы из в командной строке вам необходимо находиться в каталоге java files. Это должен быть ваш рабочий каталог, так как это каталог root, содержащий ваш внешний пакет, oops.

Затем вам нужно сначала скомпилировать person. Вы не можете скомпилировать Inheritance в одиночку. Компилятор распознает классы, используемые в Inheritance - person, Teacher и Singer - только после того, как каждый из них будет скомпилирован. Используйте относительный путь к файлу:

javac oops/Inheritance/person.java

(используйте backsla sh вместо sla sh, если включен Windows). После person скомпилируйте Teacher и Singer (в любом порядке). Наконец, скомпилируйте Inheritance.

Изменить: Это сработало на моем BSD Unix с bash:

$ ls oops/inheritance/
Inheritance.java  Singer.java
Person.java       Teacher.java
$ javac oops/inheritance/Person.java 
$ javac oops/inheritance/Teacher.java oops/inheritance/Singer.java 
$ javac oops/inheritance/Inheritance.java 
$ ls oops/inheritance/
Inheritance.class Person.java     Teacher.class
Inheritance.java  Singer.class        Teacher.java
Person.class      Singer.java
$ java oops.inheritance.Inheritance
Inside Person constructor
Inside teacher constructor
Personraviperson is eating
teacherraviis eating
Personraviperson is walking
raviTeacher is teaching
Inside Person constructor
Inside singer constructor
teacherarjunis eating
Personarjunperson is walking
Inside Person constructor
$

по сравнению с ваш код Я использовал маленький i в имени пакета inheritance и верхний регистр P в классе Person, оба в соответствии с соглашением об именах Java. Я также исправил количество закрывающих фигурных скобок и подобных мелких деталей, которые не имеют отношения к проблеме компиляции и запуска.

Что у вас пошло не так, когда вы попробовали мое предложение, извините, я не могу угадай.

...