Nie wiem jak poprawnie zrobić dziedziczenie. Mam klasę:
package metody;
public class Metody
{
int promien;
public static void main(String[] args)
{
Metody metody = new Metody(1, "km");
System.out.println(metody.dodawanie2());
System.out.println(metody.promien);
System.out.println(suma(1, 4));
// Metody[] metody = new Metody[3];
// metody[0] = new Metody();
// metody[1] = new Metody(5);
// metody[2] = new Metody(10);
//
// for(Metody x: metody)
// {
// System.out.println(x.dodawanie2());
// }
}
// public void setPromień(int r)
// {
// promien = r;
// }
public Metody()
{
this(1);
}
public Metody(int r)
{
this(r, "coś");
}
public Metody(int r, String k)
{
promien = r;
if(k.equals("km"))
{
promien = promien*100;
}
}
public int dodawanie2()
{
int obliczenia = promien + 2;
return obliczenia;
}
public static int suma(int a, int b)
{
int dodawanie = a+b;
return dodawanie;
}
}
i klasę:
package parametry;
import metody.Metody;
public class Przekazywanie extends Metody
{
int x;
public Przekazywanie()
{
this(1);
}
public Przekazywanie(int r)
{
x = r;
}
public int dodawanie()
{
return x+2;
}
public String toString()
{
return "wynik " + dodawanie();
}
public static void main(String[] args)
{
Metody metody2 = new Metody();
Przekazywanie przekazywanie = new Przekazywanie();
System.out.println(przekazywanie);
System.out.println(super.promien);
System.out.println(metody2.dodawanie2());
}
}
Żeby dziedziczyć samo pole promien z klasy Metody myślałem, że wystarczy użyć super.promien
ale działa tylko kiedy wcześniej zadeklaruję to pole jako publiczne i statyczne - da się bez takiej deklaracji dziedziczyć to pole?
Nie rozumiem jak ma się statyczność danego pola do dziedziczenia. Rozumiem, że powinno być publiczne (chociaż w poradniku z którego korzystam wcale publiczne nie jest) ale nie rozumiem czemu to pole musi być statyczne.