Sobes.tech
Junior

Co je to přetypování (casting) v Java?

sobes.tech AI

Odpověď od AI

Převod typů (casting) v Javě je převod hodnoty jednoho datového typu na jiný datový typ.

Druhy převodů:

  • Explicitní (zjevný) casting: Provádí jej programátor pomocí operátoru (typ). Používá se k převodu z "většího" typu na "menší" (například z double na int). Může dojít ke ztrátě dat.
    // implicitní převod (automatický)
    int a = 10;
    double b = a; // int na double
    
    // explicitní převod (zřejmý)
    double c = 10.5;
    int d = (int) c; // double na int, d bude 10
    
  • Implicitní (automatický) převod (Widening Conversion): Provádí se automaticky JVM, když se převádí z "menšího" typu na "větší" (například z int na double). Je bezpečný a nezpůsobí ztrátu dat.
    int x = 10;
    double y = x; // int automaticky na double
    

Převod typů může probíhat mezi primitivními typy nebo mezi objekty v hierarchii dědičnosti.

U převodu objektů:

  • Upcasting: Převod podtřídy na její nadtřídu. Je implicitní a bezpečný.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Převod nadtřídy na její podtřídu. Vyžaduje explicitní převod a může vyvolat ClassCastException za běhu, pokud objekt není skutečně instancí cílové podtřídy.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - vyžaduje explicitní převod a kontrolu pomocí instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Nyní lze používat metody specifické pro Dog
    }