JAVA1025 类:继承:interface,接口继承必须实现接口方法;extends单继承 抽象类 属性 static
类
继承
interface
协议继承
多继承
在面向对象编程中,“接口实现多继承” 是指一个类可以通过实现多个接口来获得多种不同的行为约定,从而模拟了多继承的效果(特别是在像 Java 这样只支持单继承的语言中)。
// 接口1: 定义飞行能力
interface Flyable {void fly();
}// 接口2: 定义游泳能力
interface Swimmable {void swim();
}// 父类
class Animal {void breathe() {System.out.println("Breathing...");}
}// 子类 Bird 继承 Animal,并实现 Flyable 接口 (获得飞行能力)
class Bird extends Animal implements Flyable {@Overridepublic void fly() {System.out.println("Bird is flying");}
}// 子类 Duck 继承 Animal,并实现 Flyable 和 Swimmable 接口 (获得飞行和游泳能力)
class Duck extends Animal implements Flyable, Swimmable {@Overridepublic void fly() {System.out.println("Duck is flying");}@Overridepublic void swim() {System.out.println("Duck is swimming");}
}public class Main {public static void main(String[] args) {Bird sparrow = new Bird();sparrow.breathe(); // 继承自 Animalsparrow.fly(); // 实现 FlyableDuck donald = new Duck();donald.breathe(); // 继承自 Animaldonald.fly(); // 实现 Flyabledonald.swim(); // 实现 Swimmable// 多态:使用接口类型引用Flyable flyingThing = donald;flyingThing.fly();Swimmable swimmingThing = donald;swimmingThing.swim();}
}
接口继承必须实现接口方法
您的问题触及了接口实现的核心机制。准确来说:实现接口的类必须提供该接口中定义的所有方法的具体实现(方法体)。
// 定义一个接口
interface Drivable {void startEngine(); // 只有声明,没有实现void accelerate(int speed); // 只有声明,没有实现void brake(); // 只有声明,没有实现
}// 一个类实现 Drivable 接口
class Car implements Drivable {// 必须实现 startEngine()@Overridepublic void startEngine() {System.out.println("Car engine started.");}// 必须实现 accelerate(int speed)@Overridepublic void accelerate(int speed) {System.out.println("Car accelerating to " + speed + " km/h.");}// 必须实现 brake()@Overridepublic void brake() {System.out.println("Car braking.");}// 类还可以有自己的其他方法public void turnOnRadio() {System.out.println("Radio turned on.");}
}
interface school (){void play();void eat();void run(int speed);
}class student implements school {
public void play(){}}我的方法实现了吗?为啥没有报错 接口的继承不是必须要实现吗?



接口的实现规则是严格的:非抽象类实现接口时,必须实现接口中的所有方法。您看到的"不报错"是IDE的临时状态,一旦进行完整编译,错误一定会出现。这是Java语言的硬性规定,不会因开发环境而改变。

()
忘了

接口内方法不能实现方法体

extends单继承
单继承限制: 最关键的限制是,在 Java、C#、PHP 等许多主流 OOP 语言中,一个类只能直接继承自一个父类。这就是“单继承”的含义。
class Child extends Parent1✅ (允许)
class Child extends Parent1, Parent2❌ (不允许 - 编译错误)
被继承类是父类吗?继承类叫子类吗?父类可以有多个子类吗?子类有多个父类吗
一个父类可以被任意多个子类继承。
例子:
父类 Vehicle(交通工具) 可以有子类 Car(汽车)、Bicycle(自行车)、Motorcycle(摩托车)、Truck(卡车) 等。
父类 Shape(形状) 可以有子类 Circle(圆形)、Rectangle(矩形)、Triangle(三角形) 等。
意义: 这体现了代码的复用性和抽象性。通用的属性和方法在父类中定义一次,所有子类自动获得,无需重复编写。
子类可以有多个父类吗?
答案取决于编程语言:在大多数主流语言(如 Java, C#, PHP, Swift, Kotlin)中:NO (不允许)。
这些语言遵循 单继承 原则。一个子类只能直接继承自一个父类。例如:class Dog extends Animal { … }(Dog 只能有一个直接父类 Animal)。
抽象类
abstract
必须实现
抽象类的方法,不能写抽象方法体
//抽象类的方法 不许写抽象方法体public static void gotoSchool() {}


抽象类必须被子类实现
public abstract class StudentAbstract {//抽象类的方法 不许写方法体public static void gotoSchool() {}
public class StudentAbstractImpl extends StudentAbstract {//抽象类必须被子类实现}
抽象类内部可以不写抽象方法
public abstract class StudentAbstract {//抽象类的方法 不许写方法体public static void gotoSchool() {}
//public abstract class StudentAbstract {// }是抽象方法吗?是定义了一个抽象类吧
//是的 抽象类
//抽象类必须被子类实现;如果抽象类内定义了抽象方法,子类内必须也实现抽象方法

属性
// 属性static class Student {private String name;Student(String name){ this.name = new String(name);}//是一个方法吗?}
Student(String name) { // 与类同名 + 无返回类型声明this.name = new String(name); // 初始化对象
}
这是一个构造函数(Constructor),不是普通方法。以下是详细解析:
Student(String name) { // 与类同名 + 无返回类型声明this.name = new String(name); // 初始化对象
}

static
// 创建对象时自动调用构造函数
Student s = new Student("张三"); // 等效于执行了:
// 1. 分配内存空间
// 2. 调用构造函数:this.name = new String("张三")


静态和初始化的关系
- 初始化时机类加载时初始化:静态成员在类首次加载到JVM时初始化早于实例初始化:静态初始化发生在任何对象创建之前只初始化一次:整个程序生命周期中仅初始化一次
设置静态能提高初始化效率吗?


