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

2022-08-15 社会 160阅读

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

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


二、实现方案

(一)实现接口

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();
    }
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com