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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告