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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP