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关键字声明并且具有零个或多个抽象方法的类被称为abstractclass。抽象类是不完整的类,因此,要使用该类,我们必须严格将抽象类扩展为具体类。
示例
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关键字声明的类是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),我们无法扩展最终的类,因此编译器将抛出error。上面的程序没有 执行。
输出结果
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