引言:
写接口的时候,因为给方法改名的时候打了个空格,意外发现IDE提示:
Illegal modifier for the interface method talk; only public & abstract are permitted
那方法前到底什么时候加abstract呢?
正文:
我们都知道Java接口在定义的时候,不管是名称还是成员方法,都只能用public、abstract修饰。所以,无论我们给接口名、方法带不带public都是公有的——不可选的默认为公有。
abstract见得不多,因此笔者刚瞅到的时候,还是一楞……其实同public一样,也是不可选的默认。
因此如下的两种定义,在JVM识别的时候是没任何区别(除了2可以定义在别的java文件里了 ;-0 )的:
(1)
public abstract interface AdultBehavior{
abstract void teachChildrenToSpeak();
void talk();
public abstract void sayHi();
}
(2)
interface AdultBehavior{
void teachChildrenToSpeak();
void talk();
void sayHi();
}
补充(201109051308)
另外,笔者做了个测试。测试结论是:在任何名称的java文件中定义非public修饰(实际本身已是public)的接口,都将生成一个额外的以此接口名为文件名的class文件。再一次验证了上文观点。
分享到:
相关推荐
在 PersonInterface 接口中,我们定义了一个抽象方法, 然后在 Person 类中实现了该方法。 结论 通过这两种机制,我们可以实现面向对象编程的多态性,从而使得 Java 应用开发具有灵活性和敏捷性。抽象类和接口使得...
在深入探讨Java抽象类与抽象方法之前,...通过定义抽象类和抽象方法,可以构建出更加灵活和可扩展的代码结构,使得代码更易于维护和扩展。理解并掌握抽象类和抽象方法的使用,对于成为一名优秀的Java开发者至关重要。
- **已实现的方法**:接口里只能定义抽象方法;而抽象类则可以包含已实现的方法。 - **变量类型**:接口里只能定义静态常量,不能定义其他变量;而抽象类既可以定义一般变量,也可以定义静态常量。 #### 示例:Java...
Java接口是一种完全抽象的类,它只包含常量和抽象方法的声明,不允许有具体的实现代码。接口中的所有方法默认都是`public abstract`的,所有的变量默认都是`public static final`的。接口的主要用途是定义一组行为...
4. 多继承:Java接口支持多继承,一个接口可以继承多个父接口,实现接口的组合和扩展。 5. 实现:实现接口的类必须实现接口中声明的所有方法,否则这个类也必须被声明为抽象类。 其次,抽象类(Abstract Class)是...
1. 创建一个抽象类,比如`Vehicle`,并定义抽象方法如`startEngine()`、`stopEngine()`等,然后创建几个不同的车辆类(如`Car`、`Bike`)来继承这个抽象类并实现这些方法。 2. 定义一个`Animal`接口,包含`eat()`、`...
Java 接口是 Java 语言中的一种特殊的抽象类,它定义了一组抽象方法和默认方法,用于规范多个类之间的公共行为。在本文中,我们将详细介绍 Java 接口的定义、抽象方法、默认方法、实现类和使用方法。 一、Java 接口...
5. **默认方法**:Java 8引入了默认方法,接口中可以有带有实现的默认方法,而抽象类中则可以自由添加非抽象方法。 6. **设计意图**:抽象类通常表示“is-a”关系,而接口更倾向于“can-do”或“behaves-like-a”...
同时,这三个类还实现了DiagArea接口,该接口定义了getDiagonal()和getArea()方法,分别用于获取对角线长度和面积。在主方法main中,我们创建了这三个形状类的对象,并调用了showArea()方法来显示面积,同时也调用了...
- **接口**:在Java 8之前,接口只能声明抽象方法和常量;自Java 8起,引入了默认方法(default method)和静态方法,使得接口能够提供具体的方法实现。 这种区别意味着抽象类可以提供更多的功能性和代码重用机会,...
1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。 3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出...
在这个例子中,`Walkable`接口定义了一个`walk`方法。`Person`类和`Dog`类分别实现了这个接口,并提供了具体的行走方式。这种设计允许我们通过`Walkable`接口引用`Person`或`Dog`的对象,并调用其`walk`方法,体现了...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...
- **接口**:传统上接口只能定义抽象方法。但自Java 8起,接口可以包含默认方法和静态方法,为实现类提供默认实现。 ##### 3. 成员变量 - **抽象类**:可以包含实例变量。 - **接口**:只能包含静态常量(默认为...
复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...
3. 方法实现:抽象类中的抽象方法可以有默认实现,而接口中的方法没有默认实现,除非是在Java 8及以上版本中引入的默认方法和静态方法。 4. 访问修饰符:抽象类中的方法可以有不同的访问修饰符,而接口中的所有方法...
掌握Java中抽象类和抽象方法的定义; 掌握Java中接口的定义,熟练掌握接口的定义形式以及接口的实现方法。 二、实验内容 1、按照要求使用Java进行编码。 编写一个抽象类Shape,其中有抽象方法getArea()和...
Java接口和内部类是Java语言中两种重要的抽象机制,它们在软件设计中起着关键作用。接口主要用于定义对象之间的交互规范,而内部类则提供了一种封装和隐藏类的机制,使得类的设计更加灵活。 首先,接口是一个合约,...
Java接口与多态的关系在于,接口是多态性的一个重要工具。当我们有一个接口类型的引用指向实现该接口的实例时,我们可以通过接口引用调用其所有实现的方法。这样,即使在运行时,我们也可以根据实际的对象类型动态地...
而接口(interface)只能包含抽象方法(无方法体的方法)、常量(静态最终字段)以及默认方法(Java 8引入,提供了默认实现)。 2. 类可以继承一个抽象类,但只能直接继承一个,而可以实现多个接口。这是Java为解决...