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

  • 相关阅读:
    mac系统怎么给文件夹加密?mac文件夹加密教程
    android 代码优化:关闭输出日志
    mac下安装eclipse+CDT
    Android JNI MAC OS环境配置
    在mac下设置环境变量
    build_native.py文件分析(2)
    使Android 自带SDK 完美支持HTML5 之 html5webview
    WebView基本使用
    android EditText如何使光标随着输入内容移动
    mac下增加eclipse内存
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5905955.html
Copyright © 2011-2022 走看看