传奇广告查询第一站 同步54.com

【传奇爱好者交流】Java 中接口与继承的区别
转载 于2026-06-12 14:48:18发布
26 阅读
0
0
本文为CSDN博主「mgw1413」的原创文章:https://blog.csdn.net/mgw1413/article/details/161681139

继承和接口是 Java 面向对象两大核心特性,Java 内置interface关键字,二者设计目的、使用场景截然不同,下面详细区分。


一句话核心答案

抽象类是「is a(是什么)」关系,接口是「has a(有什么能力)」关系。而且 Java 是单继承 **,一个类只能有一个爹,但可以有 N 个接口(能力)。**


1. 继承(extends)

继承通过extends实现,子类复用父类非私有属性与方法,拓展自身功能,Java只允许单类继承,支持方法重写。


示例代码

class Animal {

   public void eat() {

       System.out.println("动物在吃东西");

   }

}

// Dog继承Animal

class Dog extends Animal {

   public void bark() {

       System.out.println("狗在汪汪叫");

   }

}

public class Test {

   public static void main(String[] args) {

       Dog d = new Dog();

       d.eat();  // 继承父类方法

       d.bark(); // 子类自有方法

   }

}

一键获取完整项目代码

关键点

子类自动拥有父类成员变量与普通方法,实现代码复用;

可新增独有方法,也能重写父类方法;

Java 类单继承,多层继承容易提高代码耦合。

2. 接口(interface)

Java 原生interface关键字定义接口,只定义行为规范,不实现业务逻辑,实现类必须重写全部抽象方法;Java 一个类可通过implements实现多个接口。


JDK8 + 接口可拥有 default 默认方法、static 静态方法,但核心作用仍是定义行为契约。


示例代码

// 定义图形接口

interface IShape {

   void draw(); // 抽象方法,实现类必须重写

}

// 圆形实现接口

class Circle implements IShape {

   @Override

   public void draw() {

       System.out.println("画一个圆形");

   }

}

// 矩形实现接口

class Rectangle implements IShape {

   @Override

   public void draw() {

       System.out.println("画一个矩形");

   }

}

public class Test {

   public static void main(String[] args) {

       IShape shape1 = new Circle();

       shape1.draw();

       IShape shape2 = new Rectangle();

       shape2.draw();

   }

}

一键获取完整项目代码

关键点

接口不能实例化,实现类未实现全部抽象方法则必须定义为抽象类;

用来统一行为标准,面向多态编程;

一个类能同时实现多个接口,突破单继承限制。

3. 继承 vs 接口对照表

特性 继承 (extends) 接口 (implements)

核心思想 代码复用,子类拥有父类资源 定义行为规范,约束实现

方法实现 普通方法可完整实现 抽象方法无实现;JDK8 有 default/static 方法

多实现 Java 类只能单继承 一个类可实现多个接口

成员变量 可以定义各类成员属性 默认常量public static final,不能定义实例变量

语义关系 is-a(是一种) can-do(具备某项能力)

4. 继承和接口组合使用

Java 常用:单继承一个父类 + 实现多个接口,兼顾代码复用与功能拓展。


示例代码

// 父类,提供通用代码

class Animal {

   public void eat() {

       System.out.println("动物在吃东西");

   }

}

// 奔跑接口,定义能力

interface IRun {

   void run();

}

// Dog继承父类+实现接口

class Dog extends Animal implements IRun {

   @Override

   public void run() {

       System.out.println("狗在奔跑");

   }

   public void bark() {

       System.out.println("狗在汪汪叫");

   }

}

public class Test {

   public static void main(String[] args) {

       Dog d = new Dog();

       d.eat();

       d.run();

       d.bark();

   }

}

一键获取完整项目代码

说明

Dog 通过继承 Animal 复用 eat (),通过实现 IRun 拓展奔跑能力,既有复用又灵活扩展。


5. 总结

特点 继承 接口

主要作用 复用已有代码 统一行为规范、拓展功能

变量 允许实例成员变量 仅常量

继承数量 类只能单继承 多实现无限制

适用场景 满足 is-a 从属关系,共用逻辑代码 多个类行为一致、实现不同,拓展额外功能

✅ 什么时候用继承

类满足严格的 is-a 关系,需要复用父类字段和方法时使用,控制继承层级,避免耦合过高。例:Dog extends Animal狗属于动物。


✅ 什么时候用接口

需要给不同类拓展相同能力、统一方法标准,多个类无父子关系但行为一致时使用。例:克隆接口interface Clone{void clone();},猫狗都能实现克隆。


🌟最终结论

✅ 继承 = 代码复用,描述 **is-a(是)关系✅ 接口 = 行为约束,描述can-do(能做)** 关系✅ Java 最佳实践:单继承 + 多接口,兼顾复用与拓展!🚀


💡 如果你有具体的应用场景或疑问,欢迎继续交流! 😃

54小助手
0
0
0
分享
上一篇: 教你自己动手搭建一个传奇游戏,自己和自己玩,找找当年的感觉
下一篇: 传奇挂机脚本编制
评论
历史记录
回顶部
PS: 领取成功后,关注的公众号自动打款到账
领取口令红包
¥ 88.88
恭喜你,获得口令红包
下载1GM登录器领取
操作失败
口令红包已抢光,请关注下次活动
返回上一页
浏览时间 游戏名称 游戏IP 开区网址
注册1GM论坛账号
  • 上传头像
注册

已有账号,

微信扫码登录
重置密码
重置密码

注册

绑定关联手机号
关联手机号