Sobes.tech
Junior

Какво е преобразуване на типове (casting) в Java?

sobes.tech AI

Отговор от AI

Преобразуването на типове (casting) в Java е преобразуването на стойността на един тип данни в друг тип данни.

Видове преобразувания:

  • Явно (Explicit Casting): Извършва се от програмиста с помощта на оператора (тип). Използва се за преобразуване от "по-голям" тип към "по-малък" (например, от double към int). Може да доведе до загуба на данни.
    // автоматично преобразуване (implicit)
    int a = 10;
    double b = a; // int към double
    
    // явно преобразуване (explicit)
    double c = 10.5;
    int d = (int) c; // double към int, d ще бъде 10
    
  • Имплицитно (автоматично) преобразуване (Widening Conversion): Извършва се автоматично от JVM, когато се преобразува от "по-малък" към "по-голям" тип (например, от int към double). Безопасно е и не води до загуба на данни.
    int x = 10;
    double y = x; // int автоматично към double
    

Преобразуването на типове може да се случи между примитивни типове или между обектни типове в йерархията на наследяване.

При преобразуване на обектни типове:

  • Upcasting: Преобразуване на подклас към неговия суперклас. Е implicit и безопасен.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Преобразуване на суперклас към неговия подклас. Изисква явно преобразуване и може да предизвика ClassCastException по време на изпълнение, ако обектът всъщност не е инстанция на целевия подклас.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - изисква явно преобразуване и проверка с instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Сега може да използва методи, специфични за Dog
    }