JAVA中抽象类的一些总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中抽象类的一些总结的主要内容,如果未能解决你的问题,请参考以下文章

Java抽象类的总结

java面试题总结

java 中interface和抽象类的区别

java中一些小知识和面试问题

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

总结接口和抽象类的异同