ูู„ู†ุชุฎูŠู„ ุฃู†ูƒ ุฏุฎู„ุช ุฅู„ู‰ ู…ู‚ุงุจู„ุฉ ุนู…ู„ ู„ูˆุธูŠูุฉ ู…ุจุฑู…ุฌ ููŠ ุฌุงูุง ูˆูˆุงุฌู‡ูƒ ู‡ุฐุง ุงู„ุณุคุงู„:

ููŠ ู‡ุฐุง ุงู„ูƒูˆุฏุŒ ู…ุงู‡ูˆ ู†ูˆุน ุงู„ู…ุชุญูˆู„ุงุช o ูˆ n ูˆ i ุŸ

Object  o = new Integer(4);
Number  n = new Integer(4);
Integer i = new Integer(4);

ุญู‚ูŠู‚ุฉู‹ ุงู„ุณุคุงู„ ู…ุถู„ู„ ู†ูˆุนุงู‹ ู…ุงุŒ ูู„ุง ุฌูˆุงุจูŽ ู…ุจุงุดุฑู’. ููŠ ุฌุงฺคุง ูƒู…ุง ููŠ ู…ุนุธู… ู„ุบุงุช ุงู„ุจุฑู…ุฌุฉ ุงู„ุชูŠ ุชุฏุนู… ุงู„ุจุฑู…ุฌุฉ ุงู„ุบุฑุถูŠุฉ ู‡ู†ุงูƒ ุชุนุฏุฏ ุงู„ุฃุดูƒุงู„ (Polymorphism) ุญูŠุซ ูŠู…ูƒู† ู„ู…ุชุญูˆู„ ุฃู† ูŠุฃุฎุฐ ุนุฏุฉ ุฃุดูƒุงู„.

ู†ุธุงู… ุงู„ุฃู†ูˆุงุน Type System Link to heading

ุชุนุชุจุฑ ุฌุงูุง ู„ุบุฉู‹ ุฐุงุช ู†ุธุงู… ุฃู†ูˆุงุน ู‚ูˆูŠ (Strongly Typed Language)ุŒ ุฃูŠ ุฅุฐุง ู…ุฑ ุงู„ูƒูˆุฏ ู…ุฑุญู„ุฉ ุงู„ุชุฑุฌู…ุฉ (Compilation)ุŒ ูุฅู† ุงู„ุจุฑู†ุงู…ุฌ ุณูŠุนู…ู„ ุจุฏูˆู† ู…ูุงุฌุขุช ุนู…ูˆู…ุงู‹.

โš ๏ธ ู„ุงูŠูˆุฌุฏ ุฅุฌู…ุงุน ุนู„ู‰ ุชุนุฑูŠู ุฑุณู…ูŠ (Formal Definition) ู„ู‚ูˆุฉ ู†ุธุงู… ุงู„ุฃู†ูˆุงุน

ุนู†ุฏู…ุง ู†ู‚ูˆู… ุจุฅุณู†ุงุฏ ู‚ูŠู…ุฉ ุชุงุจุน ู…ุง ู„ู…ุชุญูˆู„ุŒ ูŠุชู… ุงู„ุชุญู‚ู‚ ู…ู† ุตุญุฉ ู‡ุฐู‡ ุงู„ุนู…ู„ูŠุฉ ุนุจุฑ ู†ุธุงู… ุฌุงูุง ู„ู„ุชุญู‚ู‚ ู…ู† ุงู„ุฃู†ูˆุงุน (Java Type Checker).

ู„ู‡ุฐุง ู„ุงูŠู…ูƒู†ูƒ ุฃู† ุชูƒุชุจ:

Integer age = scanner.nextLine();

ู„ุฃู† ุงู„ู…ุชุญูˆู„ age ู„ู‡ ู†ูˆุน Integer ูˆู…ุชุญู‚ู‚ ุงู„ุฃู†ูˆุงุน ููŠ ุฌุงูุง ูŠุฑู‰ ุฃู†ูƒ ุชุญุงูˆู„ ุฅุณู†ุงุฏู‡ scanner.nextLine ุงู„ุชูŠ ุชุฑุฌุน ู‚ูŠู…ุฉ ู†ุตูŠุฉ StringุŒ ูˆุจุงู„ุชุงู„ูŠ ู„ุงูŠุณู…ุญ ู„ูƒ ุญุชู‘ู‰ ุจุชุฑุฌู…ุฉ ุงู„ูƒูˆุฏ.

๐Ÿ’ก ููŠ ุฌุงูุงุณูƒุฑุจุช ู…ุซู„ุงู‹ ู‡ูƒุฐุง ุฎุทุฃ ู„ุง ูŠููƒุชุดู ุฅู„ุง ุนู†ุฏ ุชุดุบูŠู„ ุงู„ูƒูˆุฏ

ุจูŠู†ู…ุง ู‡ุฐุง ุงู„ูƒูˆุฏ ูŠุนู…ู„ ุจุฏูˆู† ู…ุดุงูƒู„ ู„ุฃู†ู†ุง ุนุฑูู†ุง ุนู† ุงู„ู…ุชุญูˆู„ age ู…ู† ู†ูˆุน Object.

Object age = scanner.nextLine();

๐Ÿ’ก ุงู„ูƒู„ุงุณ Object ู‡ูˆ ุฃุจ ู„ูƒู„ ุงู„ูƒู„ุงุณุงุช ููŠ ุฌุงูุงุŒ ุฃูŠ ุฃู† ุฌู…ูŠุน ุงู„ูƒู„ุงุณุงุช ุชุฑุซู‡. ูˆุจุงู„ุชุงู„ูŠ ู…ูุชุญู‚ู‚ ุงู„ุฃู†ูˆุงุน (Type Checker) ู„ุง ูŠุฑู‰ ู…ุดูƒู„ุฉ ููŠ ู‡ุฐุง.

ู‚ุจู„ ุงู„ุฎูˆุถ ููŠ ุงู„ุฅุฌุงุจุฉ ุนู† ุงู„ุณุคุงู„ ููŠ ุจุฏุงูŠุฉ ุงู„ู…ู†ุดูˆุฑุŒ ูŠุฌุจ ุฃู† ู†ุจูŠู‘ู† ุฃู† ู„ู„ู…ุชุญูˆู„ุงุช ู†ูˆุนุงู†:

  • ู†ูˆุน ุณุชุงุชูŠูƒูŠ (Static Type) : ุงู„ู†ูˆุน ุงู„ุฐูŠ ุชู… ุงู„ุชุนุฑูŠู ุนู†ู‡ ููŠ ุงู„ูƒูˆุฏ ู‚ุจู„ ุงุณู… ุงู„ู…ุชุญูˆู„. (ุซุงุจุช ู„ุงูŠุชุบูŠุฑ)
  • ู†ูˆุน ุฏูŠู†ุงู…ูŠูƒูŠ (Dynamic Type) : ู†ูˆุน ุงู„ูƒุงุฆู† (Object) ุงู„ุฐูŠ ุชู… ุฅุณู†ุงุฏู‡ ุฅู„ูŠู‡ู…. (ูŠู…ูƒู† ุฃู† ูŠุชุบูŠุฑ)

ูู„ู†ุฃุฎุฐ ู‡ุฐุง ุงู„ูƒูˆุฏ ูƒู…ุซุงู„:

Object o = new Integer(4);
       o = new String("I am a string now");

ู†ุฑู‰ ุฃู† ุงู„ู…ุชุญูˆู„ o ู„ู‡ ุงู„ู†ูˆุน ุงู„ุณุชุงุชูŠูƒูŠ Object ุงู„ุฐูŠ ู„ุง ูŠู…ูƒู† ุฃู† ูŠุชุบูŠุฑ. ูˆู„ูƒู† ููŠ ุงู„ุณุทุฑ ุงู„ุฃูˆู„ ุงู„ู…ุชุญูˆู„ ู„ู‡ ุงู„ู†ูˆุน ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ Integer ูˆุงู„ู‚ูŠู…ุฉ ุงู„ุนุฏุฏูŠุฉ 4ุŒ ุฃู…ุง ููŠ ุงู„ุณุทุฑ ุงู„ุซุงู†ูŠ ููŠุชุบูŠุฑ ู†ูˆุนู‡ ุฅู„ู‰ String ูˆุชุตุจุญ ู‚ูŠู…ุชู‡ I am a string now.

๐Ÿค” ูƒูŠู ุณู…ุญุช ู„ู†ุง ุฌุงูุง ุจุงุณู†ุงุฏ ุนุฏุฏ ูˆู†ุต ู„ุฐุงุช ุงู„ู…ุชุญูˆู„ุŸ

ูู„ู†ุฌุฑู‘ุจ Link to heading

ู…ู† ุงู„ู…ุนู„ูˆู… ุฃู† ุฌุงูุง ู„ุงุชุณู…ุญ ุจุชุฎุฒูŠู† ู…ุชุญูˆู„ุงุช ู…ู† ุฃูƒุซุฑ ู…ู† ู†ูˆุน ููŠ ู†ูุณ ุงู„ู…ุตููˆูุฉุŒ ูˆู„ูƒู† ูŠู…ูƒู†ู†ุง ุงู„ุชุญุงูŠู„ ุนู„ู‰ ุฌุงูุง ูˆุฌุนู„ู‡ุง ุชุณู…ุญ ุจุฐู„ูƒ ุนุจุฑ ุชุนุฑูŠู ู…ุตููˆูุฉ ู…ู† ู†ูˆุน Object (ู†ูˆุน ุณุชุงุชูŠูƒูŠ). ูˆู„ูƒู† ู†ู…ู„ุฃ ุนู†ุงุตุฑู‡ุง ุจู†ุตูˆุต ูˆุฃุฑู‚ุงู….

ุจุนุฏู‡ุง ู†ู…ุฑ ุนู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ูˆู†ุชุญู‚ู‚ ู…ู† ุงู„ู†ูˆุน ุงู„ุฏูŠู†ุงู…ูŠูƒูŠุŒ ููŠ ุญุงู„ ูƒุงู† ุฑู‚ู…ุงู‹ ุตุญูŠุญุงู‹ Integer ุฃูˆ ู†ุตุงู‹ StringุŒ ู†ุทุจุน ุฐู„ูƒ ู…ุน ู‚ูŠู…ุฉ ุงู„ุนู†ุตุฑ.

public class TypeChecking {

    public static void main(String[] args) {
        Object array[] = new Object[4];

        array[0] = new String("Name 1");
        array[1] = new Integer(4);
        array[2] = new String("Name 2");
        array[3] = new Double(3.14);

        for (int i = 0; i < 4; i++) {
            if (array[i] instanceof String) {
                System.out.print("This is a string: ");
                System.out.println(array[i]);
            } else if (array[i] instanceof Integer) {
                System.out.print("This is an integer: ");
                System.out.println(array[i]);
            } else {
                System.out.println("Unknown dynamic type.");
            }
        }
    }
}

โ—€๏ธ ุฌุฑุจ ุงู„ูƒูˆุฏ

๐Ÿ’ก ุงู„ูƒู„ู…ุฉ ุงู„ู…ูุชุงุญูŠุฉ (Keyword) instanceof ุชุชุญู‚ู‚ ู…ู† ุฃุตู„ ุงู„ูƒุงุฆู† (ูƒู„ุงุณู‡)

ุฅุฐุงู‹ ู…ุง ุงู„ุฌูˆุงุจุŸ Link to heading

ุญุณุจ ู…ุงุณุจู‚ ูŠูƒูˆู† ุฌูˆุงุจ ุงู„ุณุคุงู„ ููŠ ุฃูˆู„ ุงู„ู…ู†ุดูˆุฑ ุฃู† ุงู„ู†ูˆุน ุงู„ุณุชุงุชูŠูƒูŠ ู„ูƒู„ ู…ู† o ูˆ n ูˆi ู‡ูˆ Object ูˆ Number ูˆ Integer ุนู„ู‰ ุงู„ุชุฑุชูŠุจ. ุงู„ู†ูˆุน ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู‡ูˆ Integer ู„ู„ูƒู„.