JAVA中抽象類的一些總結


  1. 抽象類和普通類一樣,有構造函數。抽象類中有一些屬性,可以利用構造方法對屬性進行初始化。子類對象實例化的時候先執行抽象類的構造,再執行子類構造。
  2. 抽象類不能用final聲明。因為抽象類必須有子類繼承,所以抽象類不能使用final定義。
  3. 抽象類不能用static進行聲明,但是抽象類中的內部類可以使用static聲明。

 

abstract class A
{
    static abstract class B
    {
        public abstract void print();
    }
}

class X extends A.B
{
    public void print()
    {
        System.out.println(this.getClass());
    }
}


public class Hello
{
    public static void main(String[] args)  throws Exception
    {
        A.B ab = new X();
        ab.print();
    }
}

 

輸出:class X

 4.抽象類和普通類一樣,可以有static方法,且可以通過類名稱.方法名的方式進行調用

 

abstract class A
{
    public static void test()
    {
        System.out.println("抽象類中的static方法");
    }
}


public class Hello
{
    public static void main(String[] args)  throws Exception
    {
        A.test();
    }
}

 

5. 有些時候抽象類只需要一個特定的系統子類操作,可以對外部隱藏抽象類的實現。這樣的設計在系統類庫中比較常見,目的是為了隱藏我們不需要的子類實現。

abstract class A
{
    public abstract void print();

    private static class B extends A
    {
        public void print()
        {
            System.out.println("打印消息測試");
        }
    }

    public static A getInstance()
    {
        return new B();
    }
}


public class Hello
{
    public static void main(String[] args)  throws Exception
    {
        A a = A.getInstance();
        a.print();
    }
}

6. 觀察下面的輸出。

abstract class A
{
    public A()
    {
        this.print();
    }

    public abstract void print();
}

class B extends A
{
    private int num = 100;
    public B(int num)
    {
        super();
        this.num = num;
    }

    public void print()
    {
        System.out.println(this.num);
    }
}


public class Hello
{
    public static void main(String[] args)  throws Exception
    {
        B b = new B(30);
    }
}

上面代碼輸出: 0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM