【问题标题】:How do interfaces and inheritance affect the relationship between classes and objects in Java?接口和继承如何影响 Java 中的类和对象之间的关系?
【发布时间】:2019-07-16 02:04:45
【问题描述】:

随着我对 OOP 编程知识的不断扩展,将所有概念重新组合在一起变得越来越困难。另外,我知道对象、类、接口和继承是什么。但是,我看不到“大局”。

一个对象体现了一个特定的概念(类)并将特定的数据存储到该类。更具体地说,它是一个类的实例。

一个类在其类的所有对象(“模板”)中定义了一组通用的属性和行为

接口本质上是方法头的待办事项列表。它期望它的孩子实现这些抽象方法。它这样做是为了尝试创建一种在不相关类中执行某些操作的标准方式(例如:Comparable 中的 compareTo())

继承允许子类通过添加更多功能和行为来扩展对象的设计空间,同时仍保留超类的功能和行为。

所有这些概念都会影响对象与类的交互方式,但我看不出继承和接口与对象有什么关系。这是一个相当概念性的问题,但这个“大图景”究竟是什么?所有这些概念如何影响类和对象之间的关系?

【问题讨论】:

  • 这对于 Stack Overflow 来说实在是太宽泛了。该站点专为针对特定编程问题的狭隘问题而设计,并提供可能的现场解决方案。此处应避免讨论和一般指导。寻求讨论/论坛站点,例如CodeRanch.com。提示:这些概念很难抽象地理解。寻找涉及半现实应用场景的讨论。

标签: java class object inheritance interface


【解决方案1】:

继承是面向对象的概念,它有很多类型,如 Single、Hybrid 等。Java 以 Interface 的方式支持多重继承。接口允许您在抽象级别定义行为或功能。它让孩子们实现这些行为或功能。例如(在官方文档中给出):您可以定义自行车的行为,如 gearUp、gearDown、踏板、break 等,并让品牌实现他们的风格和功能。下面是java文档链接。 https://docs.oracle.com/javase/tutorial/java/concepts/interface.html

【讨论】:

    【解决方案2】:

    简单来说,继承就是获取另一个类的属性/行为。为了实现继承,我们必须在 JAVA 中使用关键字 extends。

    B 类扩展 A 类意味着 B 类的行为与 A 类一样,并且 A 类中的所有方法和变量也可以使用 B 类引用。 IE。无论 A 类拥有什么,它也由 B 类共享。

    而接口是一个类型定义块(用户定义)。抽象(不完整)类可以称为接口。一个接口只允许不完整的方法。为了继承接口,我们在 JAVA 中有一个关键字 implements。如果一个类实现了一个接口,它就必须收缩。

    也就是说:实现接口的类应该被声明为抽象的,或者类应该覆盖接口中的方法并完成它。(即提供方法体)。

    例子:

    Interface Car
    
    { public void display(); //Incomplete Method, Method has no Implementation.
    
    }
    
    class B implements Car
    
    { public void display()
    
    { System.out.println(“HI”);
    
    } }
    

    这里的 display 方法在 B 类中被覆盖和完成。因此不需要将 B 类声明为抽象。

    注意:在 JAVA 中不能使用类进行多重继承。 IE。子类可以扩展或只有一个父类。

    在 JAVA 中可以使用接口进行多重继承。 IE。一个接口可以扩展多个接口/实现多个接口。

    无法创建接口对象,因为它不完整。

    接口方法应该是非静态的,因为它是不完整的,应该被覆盖以使其完整。如果接口方法是静态的,它就不能被覆盖,因为只有一个静态成员的副本存在并且是在类加载期间加载的。

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2021-01-19
      • 2021-08-25
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多