Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java มีคลาสกี่ประเภท?

ประเภทของคลาสใน Java

Concrete class

คลาสปกติที่ไม่มี abstract method ใดๆ หรือคลาสที่มี implementation ของทุกเมธอดของ parent class หรือ interface และเมธอดของตัวเอง เรียกว่า concrete class

ตัวอย่าง

public class Concrete {
    static int product(int a, int b) {
        return a * b;
    }
    public static void main(String args[]) {
        int p = product(2, 3);
        System.out.println("Product: " + p);
    }
}

ผลลัพธ์

Product: 6

Abstract class

คลาสที่ประกาศด้วย abstract keyword และมี abstract methods ศูนย์หรือมากกว่า เรียกว่า abstract class Abstract classes เป็น incomplete classes ดังนั้นเพื่อใช้งาน เราต้อง extend abstract class ไปยัง concrete class อย่างเคร่งครัด

ตัวอย่าง

abstract class Animal {
    public abstract void sound();
}
public class Dog extends Animal {
    public void sound() {
        System.out.println("Woof");
    }
    public static void main(String args[]) {
        Animal a = new Dog();
        a.sound();
    }
}

ผลลัพธ์

Woof

Final class

คลาสที่ประกาศด้วย final keyword เป็น final class และ ไม่สามารถ extend ได้โดยคลาสอื่น ตัวอย่างเช่น java.lang.System class

ตัวอย่าง

final class BaseClass {
    void Display() {
        System.out.print("This is Display() method of BaseClass.");
    }
}
class DerivedClass extends BaseClass {
    // Compile-time error - can't inherit final class
    void Display() {
        System.out.print("This is Display() method of DerivedClass.");
    }
}
public class FinalClassDemo {
    public static void main(String[] arg) {
        DerivedClass d = new DerivedClass();
        d.Display();
    }
}

ในตัวอย่างข้างต้น DerivedClass extends BaseClass(final) เราไม่สามารถ extend final class ได้ ดังนั้น คอมไพเลอร์จะโยน error โปรแกรมข้างต้น ไม่ execute

ผลลัพธ์

cannot inherit from final BaseClass
Compile-time error - can't inherit final class

POJO class

คลาสที่มีแค่ private variables และ setter/getter methods เพื่อใช้ตัวแปรเหล่านั้น เรียกว่า POJO (Plain Old Java Object) class เป็น fully encapsulated class

ตัวอย่าง

class POJO {
    private int value=100;
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
}
public class Test {
    public static void main(String args[]){
        POJO p = new POJO();
        System.out.println(p.getValue());
    }
}

ผลลัพธ์

100

Static class

Static classes คือ nested classes กล่าวคือ คลาสที่ประกาศภายในอีกคลาสหนึ่งเป็น static member เรียกว่า static class

ตัวอย่าง

import java.util.Scanner;
class staticclasses {
    static int s; // static variable
    static void met(int a, int b) { // static method
        System.out.println("static method to calculate sum");
        s = a + b;
        System.out.println(a + "+" + b); // print two numbers
    }
    static class MyNestedClass { // static class
        static { // static block
            System.out.println("static block inside a static class");
        }
        public void disp() {
            int c, d;
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter two values");
            c = sc.nextInt();
            d = sc.nextInt();
            met(c, d); // calling static method
            System.out.println("Sum of two numbers-" + s); // print the result in static variable
        }
    }
}
public class Test {
    public static void main(String args[]) {
        staticclasses.MyNestedClass mnc = new staticclasses.MyNestedClass(); // object for static class
        mnc.disp(); // accessing methods inside a static class
    }
}

ผลลัพธ์

static block inside a static class
Enter two values
10 20
static method to calculate sum
10+20
Sum of two numbers-30

Inner Class

คลาสที่ประกาศภายในอีกคลาสหรือเมธอด เรียกว่า inner class

ตัวอย่าง

public class OuterClass {
    public static void main(String[] args) {
        System.out.println("Outer");
    }
    class InnerClass {
        public void inner_print() {
            System.out.println("Inner");
        }
    }
}

ผลลัพธ์

Outer