Java新手(手写笔记:实施vs扩展)

时间:2020-05-22 16:21:09

标签: java

我刚开始学习Java,并且一直在阅读,概述并记下我的书《 Murach的Java编程(第5版)》。

尽管有我的笔记,但我仍然对Java感到困惑。我只想知道我写的笔记是否正确?我确实在网上寻求帮助(包括该论坛中的一些帖子),但是我仍然不确定自己做对了吗。

(PS:我的笔记可能需要更多帮助。我应该重用此主题还是创建新主题?)


我的笔记

实现关键字用于以下用途:

  1. 继承接口(在技术上为“子接口”)。
  2. 如果您不想继承所有方法和字段,则必须将其声明为抽象类。

扩展关键字用于以下用途:

  1. 创建子类(如之前在第8章中所述)。
  2. 继承其他类(子类,子类)。

使用以下助记符:“您实现接口并扩展类”

2 个答案:

答案 0 :(得分:0)

1)继承接口(技术上是“子接口”)。

一个接口可以扩展一个或多个其他接口。术语继承通常不应用于接口。请注意,接口根本不能声明任何方法和字段,而只能用作标记。

2)如果您不想继承所有方法和字段,则必须将其声明为抽象类。

抽象类可以具有某些方法的实现,可以具有一些非公共字段和方法,因此与接口相比有很多差异。

我建议从另一个角度看待它-接口首先声明了通信协议-因此它定义了无论实现如何都可以调用的方法。抽象类为某些方法提供了一些实现。如果您考虑了界面中的默认方法-我建议您避免将它们用作入门工具-因为它们是为特定目的而添加的,并且您在学习时几乎不需要。

extends关键字用于以下用途: 1)创建子类(如之前在第8章中所述)。

创建子类并扩展接口。

2)继承其他类(子类,子类)。

不知道与上一点有什么不同,因为子类是通过使用extends关键字通过继承创建的。所以我将其合并为语句。

答案 1 :(得分:0)

一个例子可能使概念更清晰。

class Car {
  public abstract String getMake();
  public abstract String getModel();
}
interface AlarmSystem {
  public void setPanicAlarm(boolean state);
}

现在您可以创建一个这样的类:

class MyCar extends Car implements AlarmSystem {
  private boolean panic = false;
  public String getMake() { return "Ford"; }
  public String getModel() { return panic ? "Loud Mustang" : "Mustang" };
  public void setPanicAlarm(boolean state) { panic = state; }
}

您可以说“ MyCar是一辆汽车”。 “ IS A”概念很重要。使用extends与说“ IS A”相同。但是说“ MyCar是一个警报系统”是没有意义的。那是“ HAS A”关系。说“ MyCar是一辆汽车,并且有一个警报系统”。

构建类时,请问自己“类”是否是其超类的实例(它是扩展的实例)。

在该示例中,您可以想象还有其他没有报警系统的汽车,这很好。有些没有。

所以写笔记的更好方法是:

Implements关键字用于以下用途:

  • 实现接口以向您的班级添加功能

extends关键字用于以下用途:

  • 要创建现有类的子类,以便您可以在继承父类的所有功能的同时扩展和自定义它们
相关问题