java里实现一个接口的类必须要实现接口里的所有方法吗

2024-12-30 13:21:37
推荐回答(5个)
回答1:

一、实现接口或继承抽象类的非抽象子类必须实现接口的所有方法或抽象类的所有抽象方法。

接口中的所有方法均为抽象方法,抽象类中包含非抽象方法和抽象方法。如果一个非抽象子类实现了接口,那么该子类必须实现父接口的所有方法。如果一个非抽象子类继承了抽象类,那么该子类必须实现抽象类的所有抽象方法。


二、实现方案

(一)实现接口

1. 定义接口

/**
 * 接口:表示人类行为
 */
interface Behavor {
/**
 * 抽象方法:“吃饭”方法
 */
void eat();

/**
 * 抽象方法:“睡觉”方法
 */
void sleep();
}


2. 定义子类,实现接口

/**
 * 子类:表示人类,实现“行为”接口
 */
class Person implements Behavor {
/**
 * 姓名
 */
protected String name = null;

public Person(String name) {
this.name = name;
}

//实现接口的抽象方法
@Override
public void eat() {
System.out.println(name + "正在吃饭......");
}

//实现接口的抽象方法
@Override
public void sleep() {
System.out.println(name + "正在睡觉......");
}
}


3. 定义调用类,调用方法

public class Main {
    public static void main(String[] args) {
        Person p = new Person("张三其");
        p.eat();
        p.sleep();
    }
}


(二)继承抽象类

1. 定义抽象类

/**
 * 抽象类:表示人类
 */
abstract class Person {
/**
 * 姓名
 */
protected String name = null;

public Person(String name) {
this.name = name;
}

/**
 * 抽象方法:吃饭
 */
public abstract void eat();

/**
 * 抽象方法:睡觉
 */
public abstract void sleep();
}


2. 定义子类,继承抽象类

/**
 * 子类:学生类
 */
class Student extends Person {
public Student(String name) {
super(name);
}

//实现抽象类的抽象方法
@Override
public void eat() {
System.out.println("学生" + name + "正在吃饭......");
}

//实现抽象类的抽象方法
@Override
public void sleep() {
System.out.println("学生" + name + "正在吃饭......");
}
}


3. 定义调用类,调用方法

public class Main {
    public static void main(String[] args) {
        Person p = new Student("张三其");
        p.eat();
        p.sleep();
    }
}

回答2:

实现接口或继承抽象类的子类必须实现接口的所有方法或抽象类的所有抽象方法。

实现方案:

回答3:

如果是抽象类要实现接口,可以实现部分或者一个都不实现就行,要是具体类就必须实现所有的方法

回答4:

a)若一个普通类实现了接口,那么,该普通类必须实现接口中所有的抽象方法。
b)若一个抽象类实现了接口,那么,该抽象类可以实现接口中的抽象方法,也可以不实现。
c)若一个普通的子类继承了抽象父类,该抽象的父类又实现了接口,那么,该普通的子类必须得重写,抽象父类中所有的抽象方法,并且,还必须得实现抽象的父类尚未实现的抽象方法。

回答5:

谁说的,默认方法就不需要实现