zoukankan      html  css  js  c++  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

  • 相关阅读:
    命令实现linux和客户端文件上传下载
    python--linux上如何执行shell命令
    Eureka系列(一)Eureka功能介绍
    Eureka系列(七) 服务下线Server端具体实现
    编译时多态 与 运行时多态
    静态绑定(前期绑定) 与 动态绑定(后期绑定)
    重载 与 重写
    热点检测、方法内联、动态反优化
    数据库日志
    单例模式
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5905955.html
Copyright © 2011-2022 走看看