Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2015, 19:44   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию Не видит класс

Я учу язык ява по книге Герберта Шилдта "Язык ява полное руководство девятое издание". Там есть пример программы. Исходники:

Код:
package p1;

public class Protection {
  int n = 1;
  private int n_pri = 2;
  protected int n_pro = 3;
  public int n_pub = 4;
  
  public Protection() {
    System.out.println("конструктор базвого класса");
    System.out.println("n = " + n);
    System.out.println("n_pri = " + n_pri);
    System.out.println("n_pro = " + n_pro);
    System.out.println("n_pub = " + n_pub);
  }
}
Код:
package p1;

class Derived extends Protection {
  Derived() {
    System.out.println("конструктор подкласса");
    System.out.println("n = " + n);
    
    System.out.println("n_pro = " + n_pro);
    System.out.println("n_pub = " + n_pub);
  }
}
Код:
package p1;

class SamePackage {
  SamePackage() {
    Protection p = new Protection();
    System.out.println("конструктор этого же пакета");
    System.out.println("n = " + p.n);
    
    System.out.println("n_pro = " + p.n_pro);
    System.out.println("n_pub = " + p.n_pub);
  }
}
Код:
package p1;

public class Demo {
  public static void main(String args[]) {
    Protection ob1  = new Protection();
    Derived ob2     = new Derived();
    SamePackage ob3 = new SamePackage();
  }
}
Первый код компилируется без проблема, а у всех следующих аналогичные ошибки, вида:
import Protection;
^
Derived.java:4: error: class, interface, or enum expected
class Derived extends Protection {
^
Derived.java:7: error: class, interface, or enum expected
System.out.println("n = " + n);
^
Derived.java:9: error: class, interface, or enum expected
System.out.println("n_pro = " + n_pro);
^
Derived.java:10: error: class, interface, or enum expected
System.out.println("n_pub = " + n_pub);
^
Derived.java:11: error: class, interface, or enum expected
}
^
7 errors

Не могу понять в чем проблема???
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 09.10.2015, 20:16   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А как вы компилируете последующие коды? Указываете, где искать ваш первый класс?
p51x вне форума Ответить с цитированием
Старый 10.10.2015, 15:47   #3
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Всё, с этим вопросом я разобрался, но возник еще один вопрос. Есть программный код:
Код:
public interface MyIF {
  int getNumber();
  
  default String getString() {
    return "Объект типа String по умолчанию";
  }
}
При его компилировании возникают такие ошибки:
MyIF.java:4: error: illegal start of type
default String getString() {
^
MyIF.java:4: error: = expected
default String getString() {
^
MyIF.java:4: error: ';' expected
default String getString() {
^
MyIF.java:4: error: illegal start of type
default String getString() {
^
MyIF.java:4: error: <identifier> expected
default String getString() {
^
MyIF.java:4: error: = expected
default String getString() {
^
MyIF.java:4: error: ';' expected
default String getString() {
^
MyIF.java:5: error: illegal start of type
return "Объект типа String по умолчанию";
^
MyIF.java:5: error: <identifier> expected
return "Объект типа String по умолчанию";
^
MyIF.java:6: error: = expected
}
^
MyIF.java:6: error: ';' expected
}
^
MyIF.java:7: error: reached end of file while parsing
}
^
12 errors


Но если изменить код, на этот:
Код:
public interface MyIF {
  int getNumber();
  
  String getString();
}
То все компилируется без проблем. Не значить ли это, что мой компилятор не поддерживает методы по умолчанию в интерфейсе???
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 10.10.2015, 16:10   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык расскажите чем вы компилируете.

default методы есть с Java 8.
Если стоит 8 JDK и не добавлять флаг типа -source 1.7 (или соответствующая опция в настройках IDE), то должно работать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.10.2015, 07:31   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Согласен с Alex11223. default - фишка добавленная в версии 1.8. Ей и нужно компилировать.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компилятор MinGW в NetBeans не видит класс потока (thread) bratcho Общие вопросы C/C++ 5 03.09.2015 09:31
Спарсить то что видит снифер, но не видит браузер... FleXik Общие вопросы Delphi 8 11.12.2012 00:44
Добавить класс в проект2,похожий на класс из проекта1!оба проекта есть! xeops C# (си шарп) 0 15.05.2012 20:31
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Класс не видит обЪект Borland C++ Builder firefox0013 C++ Builder 11 01.10.2009 17:30