Zadania Java

0

Hej mam problem czy ktos moglby w prosty i doglebny sposob pomoc zrozumiec mi to zadanie.. Gubie sie z this i super..

   * Poczatek pliku Test.java ***********/
class A {
   void f(){
     System.out.print("A ");
   }
   void g(){
     this.f();
   }
}
class B extends A {
   void f(){
     System.out.print("B ");
   }
   void h(){
     super.f();
   }
}
class C extends B {
   void f(){
     System.out.print("C ");
     super.h();
   }
   void g(){
     super.g();
   }
}
class Test {
   public static void main(String[] args){
   A a = new A();  a.f(); a.g();
   B b = new B();  b.f(); b.g(); b.h();
   C c = new C();  c.f(); c.g(); c.h();
   }
}

}



/****** Koniec pliku Test.java ***************/

0

Z tym też mam problem..
/******** Poczatek pliku Test.java ***********/

class A {
    A(int i) {
    	System.out.println("A: " + i);
    }
    A(int i, int j) {
    	System.out.println("A: " + i * j);
    }
    A() {
	System.out.println("A:");
    }
}
class B extends A {
    B(int i) {
    	super(i+2, i);
        System.out.println("B: " + (i+i));
    }
    B(){
    	super(1, 3);
	System.out.println("B: " + 5);
    }
}
class C extends B {
    C(int i) {
	super(i + 2);
        System.out.println("C: " + (i + i));
    }
}
class Test {
    public static void main (String args[]) {
	C c = new C(2);
    }
}

/****** Koniec pliku Test.java ***************/

0

To też nie bardzo rozumiem.. To by było na tyle.. Coś wiem ale w jakimś momencie sie gubie i nie wiem dlaczego?

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

this - wywołuje metodę z tej klasy
super - wywołuje metodę z klasy nadrzędnej.

1

Przykład 1.
Wstaw sobie w kodzie przerywniki, będzie Ci łatwiej analizować.

public static void main(String[] args){
   A a = new A();  
   System.out.print("\n******a.f():");
   a.f(); 
   System.out.print("\n******a.g():");
   a.g();
   B b = new B(); 
   System.out.print("\n******b.f():");
   b.f(); 
   System.out.print("\n*****b.g():");
   b.g();
   System.out.print("\n******b.h():");
   b.h();
   C c = new C(); 
   System.out.print("\n******c.f():");
   c.f(); 
   System.out.print("\n******c.g():");
   c.g(); 
   System.out.print("\n******c.h():");
   c.h();
   }
 

a.f(): A - oczywistość
a.g(): A - metoda g wywołuje metodę f() z klasy A
b.f(): B - oczywistość - wywołujemy metodę f() w klasie B

b.g(): B - klasa B nie ma nadpisanej metody g(), stąd wywołujemy metodę, którą klasa B dziedziczy z A, metoda ta wywołuje z bieżącej klasy metodę f(), bieżącą klasą jest nadal B.

b.h(): A - wywołujmy metodę f() z klasy A.

c.f(): C A - wywołuje metodę f() z klasy C i wypisuje C (System.out.print("C ")) a następnie wywołuje metodę h() z klasy B i metodę f() z klasy A

ciąg dalszy nastąpi

1

Przykład 2.
Prześledźmy krok po kroku wykonanie programu:

  1. metoda main: C c = new C(2);

  2. klasa C: super(i + 2); //i=2 - wywołujemy dla 4

  3. klasa B: B(int i) {//i=4
    super(i + 2, i); //czyli super(6, 4);

  4. klasa A: A(int i, int j) {
    System.out.println("A: " + i * j); //ij = 64 czyli A: 24
    }

  5. klasa B: System.out.println("B: " + (i + i)); w klasie B i=4 patrz punkt 3. i + i =8//B: 8

  6. klasa C: System.out.println("C: " + (i + i)); * tutaj i=2 patrz punkt 2. *C: 4

0

Prośba do koleżanki która fajnie tłumaczy.. Mogłabyś zerknąć i napisać mi streszczenie dlaczego tak a nie inaczej? ;)


public class Pierwsza {
int a = 1;
int m() { return a; }
int test() { a++; return m();}
int testThis() { a--; return this.test();}
}
public class Druga extends Pierwsza {
static int b = 2;
int m(){ return b;}
int testSuper() { b++; return super.test(); }
}

class Trzecia extends Druga {
int m() { return a+b; }
int testSuper() { b--; return super.m(); }
}

public class Q22 {
public static void main(String[] args)
Pierwsza a = new Pierwsza() ;
Druga b = new Druga() ;
Trzecia c = new Trzecia() ;
System.out.print(a.test() + " " + a.testThis()+ " ");
System.out.print(b.test() + " " + b.testSuper() + " " +
b.testThis()+" ");
System.out.println(c.test() + " " + c.testSuper() + " " +
c.testThis());
}
}


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