Java 中有哪些不同类型的类?

javaobject oriented programmingprogramming更新于 2024/7/27 1:33:00

Java 中的类类型

具体类

任何没有抽象方法的普通类,或者实现了其父类或接口的所有方法以及自己的方法的类都是具体类。

示例

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 关键字声明且具有零个或多个抽象方法的类称为抽象类。抽象类是不完整的类,因此,要使用抽象类,我们严格需要将抽象类扩展为具体类。

示例

abstract class Animal { //抽象父类
   public abstract void sound(); //抽象方法
}
public class Dog extends Animal { //Dog 类扩展 Animal 类
   public void sound() {
      System.out.println("Woof");
   }
   public static void main(String args[]) {
      Animal a = new Dog();
      a.sound();
   }
}

输出

Woof

Final 类

使用 final 关键字声明的类是 final 类,它不能由其他类扩展,例如 java.lang.System 类。

示例

final class BaseClass {
   void Display() {
      System.out.print("This is Display() method of BaseClass.");
   }
}
class DerivedClass extends BaseClass { //编译时错误 - 无法继承 final 类
   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),我们不能扩展 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 void met(int a, int b) { // 静态方法
   System.out.println("静态方法计算总和");
   s = a + b;
   System.out.println(a + "+" + b); // 打印两个数字
}
   static class MyNestedClass { // 静态类
      static { // 静态块
         System.out.println("静态类中的静态块");
      }
      public void disp() {
         int c, d;
         Scanner sc = new Scanner(System.in);
         System.out.println("输入两个值");
         c = sc.nextInt();
         d = sc.nextInt();
         met(c, d); // 调用静态方法
         System.out.println("两个数字的总和-" + s); // 将结果打印到静态变量中
      }
   }
}
public class Test {
   public static void main(String args[]) {
        staticclasses.MyNestedClass mnc = new staticclasses.MyNestedClass(); // 静态类的对象
      mnc.disp(); // 访问静态类中的方法
   }
}

输出

静态类中的静态块
输入两个值 10 20
计算总和的静态方法
10+20
两个数字的总和-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

相关文章