java定义拓展和实现接口
时间: 2023-12-06 16:02:32 浏览: 34
在Java中,定义一个接口可以通过关键字interface,定义一个类实现接口可以通过关键字implements。同时,一个类可以同时实现多个接口,多个接口之间通过逗号分隔。
下面是一个例子:
```
public interface MyInterface {
void method1();
int method2(String str);
}
public class MyClass implements MyInterface {
@Override
public void method1() {
// 实现method1的具体逻辑
}
@Override
public int method2(String str) {
// 实现method2的具体逻辑
return 0;
}
}
```
在这个例子中,定义了一个接口MyInterface,包含了两个方法method1和method2。接着定义了一个类MyClass,通过implements关键字实现了MyInterface接口,并重写了接口中的两个方法。
相关问题
java接口拓展方法
Java接口可以通过两种方式来拓展方法:
1. 默认方法
默认方法是指在接口中定义的带有默认实现的方法。它可以通过接口的实现类对象或者接口类型来调用。默认方法的实现可以在接口中直接给出,也可以在实现类中重写。这种方式可以在不破坏已有代码的情况下,给接口增加新的方法。
举个例子,假设我们有一个接口Animal:
```
public interface Animal {
void eat();
void run();
default void sleep() {
System.out.println("Animal is sleeping");
}
}
```
现在我们需要在Animal接口中增加一个新方法fly,我们可以采用默认方法的方式:
```
public interface Animal {
void eat();
void run();
default void sleep() {
System.out.println("Animal is sleeping");
}
default void fly() {
System.out.println("Animal is flying");
}
}
```
这样,已有的实现类不需要做任何修改,而新的实现类可以直接继承Animal接口并实现新的方法fly。
2. 静态方法
静态方法是指在接口中定义的带有 static 关键字的方法。它可以直接通过接口类型来调用,不需要实现类对象。静态方法不能被实现类继承或重写。这种方式可以在接口中增加一些工具方法或者帮助方法。
举个例子,假设我们有一个接口Utils:
```
public interface Utils {
static int add(int a, int b) {
return a + b;
}
static int sub(int a, int b) {
return a - b;
}
}
```
这样,我们可以直接通过接口类型来调用add和sub方法,不需要创建实现类对象:
```
int result = Utils.add(1, 2);
int result2 = Utils.sub(5, 3);
```
java接口和抽象类的异同是什么
Java中的接口和抽象类都是用来实现多态性的机制,但它们有一些不同之处。
相同点:
- 都不能被实例化,只能被子类实现或继承。
- 都可以定义抽象方法,需要子类实现。
不同点:
- 接口只能定义抽象方法和常量,不能实现方法,而抽象类可以定义抽象方法和具体方法。
- 子类可以实现多个接口,但只能继承一个抽象类。
- 接口中的方法默认是public和abstract的,抽象类中的抽象方法可以有任何访问控制符。
- 接口中不能定义实例字段,抽象类中可以定义实例字段。
- 接口中不能有构造方法,抽象类可以有构造方法。
总的来说,接口强调的是行为的规范,而抽象类强调的是类的继承和拓展。如果你需要定义一些常量或者方法,并且希望让多个类实现这些方法,那么使用接口是一个不错的选择。如果你需要定义一些公共的方法和字段,并且希望强制所有的子类实现某些方法,那么使用抽象类是一个不错的选择。