Các loại class trong Java
Concrete class
Bất kỳ class bình thường nào không có abstract method hoặc class có implementation của tất cả methods của parent class hoặc interface và methods của chính nó là concrete class.
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);
}
}Kết quả
Product: 6
Abstract class
Class được khai báo với từ khóa abstract và có zero hoặc nhiều abstract methods được gọi là abstract class. Abstract classes là incomplete classes, do đó, để sử dụng chúng ta bắt buộc phải extend abstract classes thành concrete class.
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();
}
}Kết quả
Woof
Final class
Class được khai báo với từ khóa final là final class và không thể bị extend bởi class khác, ví dụ java.lang.System class.
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 extends BaseClass(final), chúng ta không thể extend final class, nên compiler sẽ ném lỗi. Chương trình trên không thực thi.
Kết quả
cannot inherit from final BaseClass Compile-time error - can't inherit final class
POJO class
Class chỉ chứa private variables và setter, getter methods để dùng các biến đó gọi là POJO (Plain Old Java Object) class. Nó là fully encapsulated class.
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());
}
}Kết quả
100
Static class
Static classes là nested classes nghĩa là class được khai báo trong class khác như static member gọi là static class.
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
}
}Kết quả
static block inside a static class Enter two values 10 20 static method to calculate sum 10+20 Sum of two numbers-30
Inner Class
Class được khai báo trong class hoặc method khác gọi là inner class.
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");
}
}
}Kết quả
Outer