Computer >> Máy Tính >  >> Lập trình >> Java

Các loại lớp khác nhau trong Java là gì?

Các loại lớp trong Java

Lớp bê tông

Bất kỳ lớp bình thường nào không có bất kỳ phương thức trừu tượng nào hoặc một lớp có triển khai tất cả các phương thức của lớp cha hoặc giao diện của nó và các phương thức của chính nó là một lớp cụ thể.

Ví dụ

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);
   }
}

Đầu ra

Product: 6

Lớp trừu tượng

Một lớp được khai báo với từ khóa trừu tượng và không có hoặc nhiều phương thức trừu tượng được gọi là lớp trừu tượng. Các lớp trừu tượng là các lớp không hoàn chỉnh, do đó, để sử dụng, chúng ta cần phải mở rộng các lớp trừu tượng thành một lớp cụ thể.

Ví dụ

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();
   }
}

Đầu ra

Woof

Lớp cuối cùng

Một lớp được khai báo với từ khóa cuối cùng là lớp cuối cùng và nó không thể được mở rộng bởi một lớp khác, ví dụ:lớp java.lang.System.

Ví dụ

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();
   }
}

Trong ví dụ trên, DerivedClass mở rộng BaseClass (cuối cùng) , chúng tôi không thể mở rộng lớp cuối cùng, vì vậy trình biên dịch sẽ gặp lỗi . Chương trình trên không thực thi .

Đầu ra

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

Lớp POJO

Một lớp chỉ chứa các biến riêng và các phương thức setter và getter để sử dụng các biến đó được gọi là lớp POJO (Plain Old Java Object). Nó là một lớp được đóng gói đầy đủ.

Ví dụ

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());
   }
}

Đầu ra

100

Lớp tĩnh

Các lớp tĩnh là các lớp lồng nhau có nghĩa là một lớp được khai báo bên trong một lớp khác như một thành viên tĩnh được gọi là lớp tĩnh.

Ví dụ

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
   }
}

Đầu ra

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

Lớp bên trong

Một lớp được khai báo trong một lớp hoặc phương thức khác được gọi là lớp bên trong.

Ví dụ

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

Đầu ra

Outer