Java 中不同型別的類有哪些?


Java 中類的型別

具體類

任何沒有抽象方法的普通類,或者實現了其父類或介面的所有方法並擁有自身方法的類,都是具體類。

示例

現場演示

public class Concrete { // Concrete Class
   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 關鍵字宣告的類,並且具有零個或多個抽象方法,被稱為抽象類。抽象類是不完整的類,因此,要使用它,我們需要嚴格地將抽象類擴充套件到具體類。

示例

現場演示

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

輸出

Woof

最終類

用 final 關鍵字宣告的類是最終類,它不能被其他類擴充套件,例如 java.lang.System 類。

示例

現場演示

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 擴充套件 BaseClass(final)**,我們不能擴充套件最終類,因此**編譯器會丟擲錯誤**。上面的程式**不會執行**。

輸出

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

POJO 類

僅包含私有變數以及用於使用這些變數的 setter 和 getter 方法的類稱為 POJO(普通舊 Java 物件)類。它是一個完全封裝的類。

示例

現場演示

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

靜態類

靜態類是巢狀類,這意味著在另一個類中作為靜態成員宣告的類稱為靜態類。

示例

現場演示

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

內部類

在另一個類或方法中宣告的類稱為內部類。

示例

現場演示

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

輸出

Outer

更新於: 2020-02-06

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告