首页 > 代码库 > JAVA中抽象类的一些总结

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

 

JAVA中抽象类的一些总结