Sobes.tech
Junior

Javaда типти которуу (casting) эмне?

sobes.tech AI

AIден жооп

Javaда типтерди (casting) бир типтин маанисин башка бир типтин маанисине айландыруу.

Типтердин түрлөрү:

  • Ачык (Explicit Casting): Программист (тур) оператору аркылуу жасайт. "Көбүрөөк" типтен "аз" типке айландырууда колдонулат (мисалы, doubleдан intке). Бул маалыматтын жоголушуна алып келиши мүмкүн.
    // автоматтык түрдө айландыруу (implicit)
    int a = 10;
    double b = a; // intдан doubleга
    
    // ачык айландыруу (анык)
    double c = 10.5;
    int d = (int) c; // doubleдан intке, d 10 болот
    
  • Ички (Implicit) айландыруу (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го тиешелүү методдорду колдонсо болот
    }