zoukankan      html  css  js  c++  java
  • Java中由常量类引发的思考

      我们都知道,定义一个常量类是十分简单的。首先差固件一个类,然后类中声明一些public修饰的静态常量。没错就这么简单:

      

      写好之后,在其他地方使用的时候,直接类名.属性名就可以使用了。

      而LZ现在想的是能不能换一种方式来写,实际效果是一样的,但逼格会不会高点呢?仁者见仁智者见智啦:

      

      大家会发现,不就是类改成了接口了吗?然后常量的public static final修饰去掉了吗?对,没错就是这样。个人觉得逼格高点,同时也可以反映出开发人员的技术水平。那么我们来看一下为什么会等同。我们将次接口编译之后再反编译出来,也许大家就会发现,奥,原来是这样的。

      

      通过反编译的结果看到,接口变成了抽象接口,属性都变成了public static final修饰。方法都变成了public abstract修饰。那么我们总结一下:接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

  • 相关阅读:
    SQLite(快速上手版)笔记
    自定义带图片和文字的ImageTextButton
    Android 网络连接判断与处理
    Android轻量缓存框架--ASimpleCache
    Mvc4_ActionLink跟@RenderBody ,@RenderPage
    Mvc4_传值取值应用
    Mvc4_ActionResult应用
    IIS_Mvc发布
    IIS_各种问题
    SqlServer_事务
  • 原文地址:https://www.cnblogs.com/vanl/p/7374680.html
Copyright © 2011-2022 走看看