在interface里面的变量都是public static final 的。所以你可以这样写:
public static final int i=10;
或则
int i=10;(可以省略掉一部分)
注意在声明的时候要给变量赋予初值
解释:
首先你要弄清接口的含义.接口就是提供一种统一的’协议’,而接口中的属性也属于’协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.
抽象类是不’完全’的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现.
如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口A中有一个public访问权限的静态变量a。按照java的语义,我们可以不通过实现接口的对象来访问变量a,通过A.a = xxx;就可以改变接口中的变量a的值了。正如抽象类中是可以这样做的,那么实现接口A的所有对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,所有这些对象中a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。
通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则的一种体现。
分享到:
相关推荐
在Java中,成员变量是定义在类的主体部分(非方法内)的变量,它们可以是基本类型或引用类型。当成员变量是类的实例(即对象)时,我们就说它是类作为成员变量。这样做可以将相关数据和行为组合在一起,形成更复杂的...
本文将详细介绍如何使用Java反射技术来获取内部类中的静态成员变量的值。 #### 二、背景知识 在深入探讨之前,我们需要了解几个基本概念: 1. **内部类**:内部类是一种特殊的类,定义在另一个类(外部类)的内部。...
Java接口在Java编程语言中扮演着至关重要的角色,它是实现多态性和抽象化的关键机制。接口定义了一组方法签名,但不提供具体实现,这使得类可以实现多个接口,从而表现出多种行为。以下是对Java接口的详细解释: 一...
成员变量在类中声明,可以在类的任何地方访问。 ### 常量与变量的使用规范 - 常量通常使用大写字母表示,单词间用下划线连接,如`MAX_VALUE`。 - 变量名应具有描述性,遵循驼峰命名规则,如`firstName`。 ### 总结...
Java接口是Java编程语言中的一个重要概念,它提供了一种方式来定义对象的行为规范,而无需关心其实现细节。接口是抽象方法和常量值的集合,可以看作是一种特殊的抽象类,但其中只包含方法签名和常量定义,不包含任何...
4. **成员变量**:接口中的成员变量默认是`public static final`,而抽象类中的成员变量没有这样的限制。 #### 接口的实现过程 下面是一个具体的接口实现示例,该示例展示了如何定义一个接口、如何在一个类中实现...
Java中的Query接口并未在描述和标签中明确提及,但我们可以借此机会深入探讨一下Java编程语言中的面向对象特性,这是理解任何Java应用开发的基础。 面向对象编程(Object-Oriented Programming,OOP)是一种编程...
在实际编程中,一个常见的实践是将成员变量设为私有(private),然后通过公共方法(getter和setter)来读取和修改这些变量,这称为封装。方法通常设为公共(public),以便其他类可以调用。如果需要在子类中访问或...
2. **成员变量**:接口中的成员变量默认为`public static final`,即常量;抽象类中可以有各种类型的成员变量。 3. **方法**:接口中所有的方法默认都是`public abstract`的,没有方法体;抽象类中可以包含抽象方法...
接口中定义的成员变量默认为public static final,即常量。它们在所有实现接口的类中都可直接访问。 7. **接口与多态**: 接口是多态的一种实现方式。一个类实现了一个接口,就可以被声明为接口类型的引用,从而...
内部类是 Java 语言中的一种嵌套类,它可以访问外部类的成员变量和方法。内部类可以用来实现多态,例如,声明一个内部类 Shape2D,可以利用它来实现二维的几何形状类 Circle 和 Rectangle。 5.7 本章小结 本章主要...
2. **成员变量**:抽象类可以有实例变量,而接口只能有常量(final static)。 3. **方法实现**:抽象类可以包含已实现的方法,而接口中的所有方法默认都是抽象的,必须由实现类来具体实现。 4. **访问修饰符**:...
接口在Java中是一种特殊的抽象类,它仅包含方法的声明和常量定义,而不包含具体的实现细节。接口中的所有方法默认都是`public abstract`的,这意味着它们必须在实现该接口的类中被具体化;同时,接口中定义的变量...
- **定义格式**:在Java中,可以使用`interface`关键字定义一个接口,一个接口由变量定义和方法定义两部分组成。定义接口的基本语法格式如下: ```java interface 接口名 { [public][static][final] 变量; ...
在成员变量中,类变量由所有实例共享,而实例变量则属于每个实例。在值传递时,基本类型传递的是实际值,而引用类型传递的是对象的地址。 4. **变量的生存期**: 局部变量在方法执行完毕后立即消失,实例变量随着...
本篇将深入探讨Java中的对象定义及其相关的数据类型定义,帮助读者更好地理解Java的核心概念。 #### 1. Java对象定义 Java是一种面向对象的编程语言,其主要特性之一就是支持对象的概念。对象是类的一个实例,它...
Java接口和内部类是Java语言中两种重要的抽象机制,它们在软件设计中起着关键作用。接口主要用于定义对象之间的交互规范,而内部类则提供了一种封装和隐藏类的机制,使得类的设计更加灵活。 首先,接口是一个合约,...
Java中的接口是一个重要的概念,它是面向对象编程中的一个重要组成部分,主要用来定义一组抽象方法,用于规范和约束类的行为。接口提供了多态性设计的机制,允许类之间通过接口实现多种功能,而不需要直接继承。 一...
如书所言:(1)java不支持多重继承,也就是说子类至多只能有一个父类 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法 (3)子类中定义的成员变量和父类中定义的成员变量相同时,...