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

  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5905955.html
Copyright © 2011-2022 走看看