Zadanie logiczne - Java

Zadanie logiczne - Java
plucins
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:35
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:

Kopiuj
/******** 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/ _____

edytowany 1x, ostatnio: plucins
hcubyc
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 3 lata
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


Limitations are limitless > ##### Ola Nordmann napisał(a)
> Moim językiem ojczystym jest C++ i proszę uszanować to, że piszę po polsku.
edytowany 1x, ostatnio: hcubyc
plucins
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:35
0

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

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:11 dni
  • Lokalizacja:Kraków
  • Postów:1694
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.

Fantazjatyk
Ale za to da się Singleton.getInstance().foo();
plucins
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:35
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ę?

Fantazjatyk
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:133
0

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

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:11 dni
  • Lokalizacja:Kraków
  • Postów:1694
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ś.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.