精华内容
下载资源
问答
  • 接口中成员变量

    2018-06-06 09:15:43
    今天又看到了一种新的写法,在接口中写成员变量相当于在类中用public final static 来定义。interface中默认的成员变量修饰是public final static

    今天又看到了一种新的写法,在接口中写成员变量

    相当于在类中用public final static 来定义。

    interface中默认的成员变量修饰是public final static

    展开全文
  • 对待这个问题,我建议用辩证角度去看待!首先我们来看只有final没有static情况,也就是说每个...如果我用static关键字修饰了,不管你创建多少个实现类实例,他们都共享这个成员属性并且内存也只会开销紧够存储
    对待这个问题,我建议用辩证的角度去看待!首先我们来看只有final没有static的情况,也就是说每个实现类里面都会有一个名字和值都一样的变量(final强调不准改变引用地址),那么在初始化相关实现类的时候,都会单独为这个属性开辟一个存储空间,这个时候问题就来了--》不觉得很浪费内存吗?如果我用static关键字修饰了,不管你创建多少个实现类实例,他们都共享这个成员属性并且内存中也只会开销紧够存储这一个属性的内存,而不会每个实例都去开销这个属性所需的内存,这是为毛要用static。反过来,我们看看不用final,只用static的情况,打个比方我们有A,V(名字取的不错)两个实现类,A类中的某个函数需要改变这个属性的值为50才能使逻辑正确,B类中的某个函数需要改变这个属性的值为100才能使逻辑正确,那么问题来了,A类中的函数改成了50美滋滋,B类中的属性也要变成50啊!所以B类在被运用的时候就报错了,这个时候就造成了属性歧义的问题,然而我们加上final这个关键字就不一样了,开发看到这个属性就知道不能再依赖这个属性写逻辑了,所以就自己另写属性,也就避免了后面的奇异性问题。。。或者我们从书本的角度来说,接口本来就是最高层次的抽象,你给我在里面定义普通变量(我至少觉得变量一点不具抽象概念),玩呢?所以直接定死属性值,他的作用我们暂时不用考虑,但是乱用它的风险我们还是规避,仅此而已。或许现在隔壁老王出来说,那我既不用static也不用final为毛也不行呢?我就想说你这个脑子是怎么做到绿万千男人的大事的?接口本来就是为了充分利用多态特性来增加框架扩展性,你在接口里面定义一个name属性,实现类都要去利用它,那万一有的需求根本不需要用到这个属性,而只是单纯的想扩展架构呢?放在这里好看吗?对于这个情况,无论是官方还是个人意见都是在实现类定义自己需要的属性,避免属性值歧义和没有必要的耦合度,所以你在接口中不能也是没有必要去定义一个普通属性,解答完毕,话说市面上的解答花样多的我都看晕了,但是麻烦不能讲清楚真心别乱说,容易误导人。谢谢。
    
    展开全文
  • 类:abstract:抽象类 final:最终类 无法被继承,只能继承其他类 public:.java同名的公有类 ...接口中的属性:public static final共同修饰 接口方法 :抽象方法:abstract 和public 实体方法 :d...

    类:abstract:抽象类

        final:最终类 无法被继承,只能继承其他类

       public:.java同名的公有类

    类中成员变量:都可以修饰

    类中的成员方法:都可以

    方法中的局部变量:只允许final

    接口中的属性:public static final共同修饰

    接口方法 :抽象方法:abstract 和public

                      实体方法 :default,static

                   starictfp:就是可以增大运算的位数,从64位涨到80位

     接口: 公有的和抽象的但是抽象是默认修饰的

     

    修饰符

    成员访求

    构造方法

    成员变量

    局部变量

    abstract(抽象的)

    static (静态的)

    public(公共的)

    protected(受保护的)

     

    private(私有的)

    synchronized(同步的)

    native(本地的)

    transient(暂时的)

    volatie(易失的)

    final(不要改变的)

                 

     

    类 修饰符 

    Public

    可以从其他类中访问

    Abstract

    本类不能被实例化

    Final

    不能再声明子类

    构造函数修饰符  

    Public

    可以从所有的类中访问

    Protected

    只能从自己的类和它的子类中访问

    Private

    只能在本类中访问

    域/成员变量修饰符  

    Public

    可以从所有的类中访问

    Protected

    只能从本类和它的子类中访问

    Private

    只能从本类中访问它

    Static

    对该类的所有实例只能有一个域值存在

    transient

    不是一个对象持久状态的一部份

    Volatile

    可以被异步的线程所修改

    final

    必须对它赋予初值并且不能修改它

    局部变量 修饰符 

    final

    必须对它赋予初值并且不能修改它

    方法修饰符 

    Public

    可以从所有的类中访问它

    Protected

    只能从本类及其子类中访问它

    Private

    只能从本类中访问它

    abstract

    没有方法体,属于一个抽象类

    final

    子类不能覆盖它

    static

    被绑定于类本身而不是类的实例

    native

    该方法由其他编程语言实现

    asnchronized

    在一个线程调用它之前必须先给它加

    类的修饰符整合

    一.类

    类的修饰符:

    Public:可以在其他任何类中使用,默认为统一包下的任意类。

    Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,无具体功能,只能衍生子类。

    Final:不能被继承。

    二.变量

    变量修饰符:

    一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量。

    1.       可访问修饰符:

    2.       static:类变量:一个类所拥有的变量,不是类的每个实例有的变量。类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量。

    3.       final:常量。

    4.       volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。

    实例变量:和类变量对应,即每个对象都拥有各自独立的实例变量。

    三.方法:(和变量对象分为实例方法和类方法,并用有无static修饰区别)

    类方法:使用static关键字说明的方法

    1.第一次调用含类方法的类是,系统只为该类创建一个版本,这个版本被该类和该类的所有实例共享。

    2.类方法只能操作类变量,不能访问实例变量。类方法可以在类中被调用,不必创建实例来调用,当然也可以通过对象来调用。

    实例方法:实例方法可以对当前对象的实例变量操作,而且可以访问类变量。

    方法可以重载,要求:方法名相同,但是参数必须有区别。(参数不同可以使类型不同,顺序不同,个数不同)

    方法的返回类型:若无返回类型,则声明为void.

    方法中的变量作用域:

    1.       成员变量:整个类。

    2.       局部变量:定义起到方法块结束为止。

    3.       方法参数:整个方法或者构造方法。

    4.       异常处理参数:参数传递给异常处理方法。

    构造方法:和类同名的方法。为新建对象开辟内存空间后,用于初始化新建的对象。不能用对象显式的调用。

    静态初始化器:格式:static{<赋值语句组>}

    静态初始化器与构造方法的区别: 

    静态初始化器

    构造方法

    对类的静态域初始化

    对新建的对象初始化

    类进入内存后,系统调用执行

    执行new后自动执行

    属特殊语句(仅执行一次)

    属特殊方法

    方法的修饰符:

    抽象方法:用abstract修饰,只有声明部分,方法体为空,具体在子类中完成。

    类方法:静态方法,用static修饰,

    1.       调用时,使用类名作为前缀,而不是类的某个实例对象名

    2.       不能被单独对象拥有,属于整个类共享。

    3.       不能处理成员变量。

    最终方法:用final修饰,不能被子类重新定义的方法。

    本地方法:用native修饰的方法,表示用其他语言书写的特殊方法,包括C,C++,FORTRAN,汇编语言等。

    四.类成员的访问控制符:

    即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。

    权限如下: 

    访问修饰符

    同一个类

    同包

    不同包,子类

    不同包,非子类

    private

     

     

     

    protected

     

    public

    默认

     

     

     

    转载于:https://www.cnblogs.com/xuwangqi/p/11131447.html

    展开全文
  • Javainterface成员变量的默认修饰符为:publicstaticfinal所以我们在interface定义成员变量的时候,可以1:publicstaticfinalStringname="张三";2:Stringname="张三";以上两种都可以,老司机一般都是第二种...

     Java的interface中,成员变量的默认修饰符为:public static final

    所以我们在interface中定义成员变量的时候,可以

    1:public static final String name = "张三";

    2:String name = "张三";

    以上两种都可以,老司机一般都是第二种。既然是静态最终的变量,也就意味着在外面访问的时候不能修改这个成员变量的值。所以在接口中定义成员变量的,一般都是常量。不会修改的。如果要进行修改的话,定义在接口具体实现类中。

    说完成员变量的默认修饰符,顺便也提下方法的默认修饰符,方法的默认修饰符是:public abstract

    即:公共抽象的,就是用来被实现该接口的类去实现该方法。所以在接口中定义方法时候,也有两种方式

    1:public abstract List<String> getUserNames(Long companyId);

    2:List<String> getUserNames(Long companyId);

    同样老司机都是第二种。

    接口只是对一类事物属性和行为的更高次抽象;对修改关闭,对扩展开放,可以说是java中开闭原则的一种体现吧。

    转载于:https://www.cnblogs.com/qdck/p/10640817.html

    展开全文
  • 接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的接口的成员特点:A:成员变量只能是常量。默认修饰符 public static finalB:成员方法只能是...
  • <p>java接口中的成员变量一般是public static final 修饰的,当定义一个成员数组并初始化了。一个实现了该接口的子类修改了这个成员数组指向的数组对象中的某个元素。当另外一个子类再去访问这个成员数组时&#...
  • 1.接口必须要具体类实现才有意义,所以必须是public。 2. 接口中的属性对所有实现类只有一份,...为什么接口要规定成员变量必须是public static final的呢???答:首先接口是一种高度抽象的"模版",,而接口中的属性也
  • 一、Java接口中的成员变量为何必须是public static final接口中的成员变量只有一种类型,public static final ,所以可以直接省去修饰符。 为什么接口的变量修饰符必须是public static final 类型呢? ①首先接口是...
  • static:static修饰就表示它属于类,随加载而存在,如果是非static话,就表示属于对象,只有建立对象时才有它,而接口是不能建立对象,所以接口的常量必须定义为static。 final:final修饰就是
  • 接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的 接口的成员特点:A:成员变量 只能是常量。默认修饰符 public static finalB:成员方法 只能...
  • Java接口中的成员变量为什么必须是public static final? 1.问题:在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符: String param="ssm";//变量需要初始化 为什么接口要规定成员...
  • 1、接口中可以定义变量,但是变量必须有固定的修饰修饰:public static final ,所以接口中的变量也称之为常量,其值不能改变。注意:public static final修饰符,在接口的定义中,可以省略不写,但是不写不等于...
  • 接口当中也可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰,从效果上看这就是接口的常量 public static final 这三个字可以省略,但默认都是三个都在 接口当中常量必须赋初值(final...
  • public: 使接口的实现类可以使用这个常量 static:static修饰就表示...final:final修饰就是保证接口定义常量不能被实现类去修改,如果没有final话, 由子类随意去修改话,接口建立这个常量就没有意义了。 在...
  • Javainterface接口中,定义成员时由于默认修饰符自动省略,因此,默认修饰符也称为缺省属性。 成员变量默认修饰符为: public static final 成员方法默认修饰符为: public abstract 1、成员变量 从默认修饰符 ...
  • 1.类修饰符 public :所有位置都可以访问该类 friendly(默认):同一个包中的类可以访问,可以被继承(包括别...接口中所有的方法都是默认public abstract,所有的成员变量都默认是final static 个人认为,类声...
  • Java接口成员变量和方法默认修饰

    千次阅读 2017-09-30 22:46:03
    Java接口成员变量和方法默认修饰符  Javainterface成员变量的默认修饰符为:public static final 所以我们在interface定义成员变量的时候,可以 1:public static final String name...
  • A:成员变量 只能是常量。默认修饰符 public static final B:成员方法 只能是抽象方法。默认修饰符 public abstract 在interface里面变量都是public static final 。所以你可以这样写: public static final ...
  • javainterface成员变量的默认修饰符为:public static final 所以我们在interface定义成员变量的时候,可以 1:public static final String name = "张三"; 2:String name = "张三"; 以上两种都可以,...
  • 参考链接: Java中的访问修饰符 * 问题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 * 类的访问修饰符有public和默认(就是不写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,524
精华内容 609
关键字:

修饰接口中的成员变量