Java中的Object類是所有類的父類。每個類都繼承它的方法,這包括equals(),hashCode(),toString()和getClass()。Object類沒有任何數據,但它定義了類或對象可以使用的通用行為。這樣的方法通常稱為默認方法。通常,這些方法可以被覆蓋或重寫以提供適當的行為。
public class Example { public static void main(String[] args) { Object obj1 = new Object(); Object obj2 = new Object(); System.out.println(obj1.equals(obj2));//false System.out.println(obj1.hashCode());//random number System.out.println(obj1.toString());//output class name and hashcode System.out.println(obj1.getClass());//class Example } }
相反,抽象類是不能直接實例化的類。它不能被用于創建對象,而是只能用作模板或模板類定義。抽象類是一個完整的類,它只是定義了一些抽象成員,這些成員沒有具體實現。抽象類包含至少一個抽象方法,這個方法只是聲明而不是實現,它需要在子類中實現。抽象方法沒有方法體,它只是一個聲明,以分號結尾。
public abstract class Shape { protected String color; public Shape (String color) { this.color = color; } public abstract double area (); } public class Rectangle extends Shape { private double width; private double height; public Rectangle(String color,double width,double height) { super(color); this.width = width; this.height = height; } @Override public double area() { return width * height; } }
抽象類的主要用途是強迫派生類必須要實現某些特定的方法或者屬性。一旦創建了一個抽象類,任何一個派生類都會繼承抽象類中定義的抽象方法,必須實現這些方法。在Java中,抽象類使用abstract關鍵字定義。