Zadanie logiczne - Java

0

Cześć,

mam takie zadanie do rozwiązania. Chciałbym skonfrontować moje odpowiedzi z Waszymi.
Celowo nie chce podawać moich, żeby nie sugerować.

Jak jesteś chętny to zapraszam do pogłówkowania.

Dany jest nastepujacy kod programu w Javie:

/******** Poczatek pliku Test.java ***********/
abstract class A {
   abstract void metodaA();
            void metodaB(){}
}
class B extends A {
   private int z;
   static void metodaC(){}
          void metodaA(){}
   B(int i) {
      z = i;
   }
   B(){
      z = 0;
   }
}
public class Test {
   public static void main(String[] args){
   /*1*/ A a = new A();
   /*2*/ B b = new B();
   /*3*/ A c = new B();
   /*4*/ A d = new B(0);
   /*5*/ B e = new B(8);
   /*6*/ B.metodaA();
   /*7*/ B.metodaB();
   /*8*/ B f = new B(-1); f.metodaA();
   /*9*/ B g = new B( 0); g.metodaC();
  /*10*/ A h = new A();   h.metodaB();
   }
}
/****** Koniec pliku Test.java ***************/

Dla kazdej z zaznaczonych lini kodu /liczba/ w powyzszym programie okresl
czy jest poprawna (wpisz TAK), czy nie np. powoduje blad kompilacji (wpisz NIE).

/1/ _____
/2/ _____
/3/ _____
/4/ _____
/5/ _____
/6/ _____
/7/ _____
/8/ _____
/9/ _____
/10/ _____

1

http://ideone.com/ggpH9O
sam sobie odpowiedz.
Jeżeli chcesz by program się kompilował, to te linie, które sie wywalą zakomentuj przez dodanie // na początku problematycznej linii

0

@hcubyc: Podpowiesz dlaczego punkt /6/ się nie kompiluje ?

2

Ja sobie pozwolę.
Error:(25, 11) java: non-static method metodaA() cannot be referenced from a static context
Nie możesz wywoływać metody która nie jest statyczna w innej metodzie statycznej.

0

A to nie jest tak, że nie można wywoływać metody, która nie jest statyczna z klasy? Tutaj B.metodaA(); jest wywołaniem metody metodaA() z Klasy B. Jeżeli dla tej klasy utworzymy obiekt i odwołamy się przez obiekt to będzie wtedy OK. Czy dobrze myślę?

0

Według mnie 1, 6, 7 i 10 są błędne.

0

No nie możesz wywołać w taki sposób niestatycznej metody. Możesz ją wywołać w tej samej w jakiejś metodzie albo na obiekcie tak jak napisałeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1