Я пытаюсь задать примерный вопрос из Head First Java:
Я набрал его, как в netbeans. Создание 3 классов как classA, classB, classC и метод Main как смешанный класс. В классе смешанный, чтобы я получаю сообщение об ошибке, могут ли некоторые объяснить мне, почему это происходит и как это решить?
public class classA {
int ivar =7;
void m1(){
System.out.println("A's m1, ");
}
void m2(){
System.out.println("A's m2, "); }
void m3(){
System.out.println("A's m3, ");
}
}
public class classB extends classA {
void m1(){
System.out.println("B's m1, ");
}
}
public class classC extends classB {
void m3(){
System.out.println("C's m3, "+(ivar + 6));}
}
public class Mixed2 {
public static void main(String[] args) {
a=new A();
//Error Cant find symbol,Symbol:Variable a location:class mixed 2
b=new B(); //Same error above and below
c=new C();
a2=new C();
}
}
Если сомневаетесь, скопируйте код из вопроса. Не нужно проявлять творческий подход и писать что-то совсем другое, поскольку это приведет к ошибкам только тогда, когда вы учитесь.
Вы не только должны писать один и тот же код, я предлагаю вам попробовать использовать то же форматирование, то есть пробелы, чтобы сделать код более читабельным и легче проверить, что он такой же.
@PeterLawrey Большое спасибо за терпение и время!




да, вы можете набрать все это в одном классе. Пожалуйста, взгляните на приведенный ниже код. Поскольку вы все еще учитесь в лучшем виде, вы набираете его как есть, не пробуя ничего по-другому, что можно сделать позже, когда вы овладеете языком. Удачного изучения! .
public class mixedsample {
public static void main(String[] args) {
A a=new A();
B b=new B();
C c=new C();
A a2=new C();
/* b.m1();
c.m2();
a.m3();
Answer=B's,m1 ,A's,m2 ,A's,m3*/
/* c.m1();
c.m2();
c.m3();
A's,m1 ,A's,m2 ,A's,m3 */
/* a.m1();
b.m2();
c.m3();
A's,m1 ,A's,m2 ,A's,m3 */
/* a2.m1();
a2.m2();
a2.m3();
A's,m1A's,m2 ,A's,m3 */
}
}
class A{
int ivar=7;
void m1(){
System.out.println("A's,m1 ");
}
void m2(){
System.out.println("A's,m2 ");
}
void m3(){
System.out.println("A's,m3 ");
}
}
class B extends A {
void m1(){
System.out.println("B's,m1 ");
}
}
class C extends B{
void m1(){
System.out.println("A's,m1 ");
}
}
Когда вы говорите a=new A();, это подразумевает, что ссылочная переменная a уже была объявлена, и теперь вы назначаете ей новый объект «A». Чтобы объявить переменную, вам нужно дать ей тип и имя.
//you can declare the variable and assign it a reference later like this
A a;
a = new A();
//or you could initialize it all in one line
A a = new A();
Скорее всего,
class classAдолжен бытьclass A, аa = new A()должен бытьA a = new A();.