首页 > 解决方案 > Java中的多态性以及类和方法之间的关系

问题描述

所以我正在学习java中的多态性,并试图理解这段代码是如何工作的,以及它一步一步地做了什么。这是代码

Hamburger h = new Hamburger ();
FastFood food1 = h;
Food food2 = new Hamburger();
Item item1 = food2;
Item item2 = new Stone();

Eatable e1 = new Hamburger();
Eatable e2 = new FriedRice();

据我了解汉堡包是一个类, h 是一个对象。但是什么是食品和快餐食品?如果我是正确的,Eatable 是接口,它甚至是 Hamburger 类中的一种方法吗?如果使用对象 food2 而不是对象 h 会发生什么?

标签: javapolymorphism

解决方案


如果我们假设您的代码确实是 Java 并且它编译时没有错误,那么您是对的,Hamburger它是一个类;您可以这样说,因为您可以通过调用new相应的构造函数来实例化它(在 Java 中,构造函数将具有它们所属的类的名称)。Stone和相同FriedRice

h, food1, food2, item1, item2,e1e2不是对象,它们是对不同类型对象的引用(见下文)区别很细微,但如果您想了解 Java 的其他一些概念,则需要这样做;首先,那null不是一个对象……</p>

FastFood, Food,Item和是类还是Eatable接口不能说。您可以将对象分配给来自不同类类型的相应引用。这意味着, 的实例也Hamburger必须是 、 和 的实例FastFood,否则Food相应的分配将失败。但是您可以从两者中实现这一点,具有类层次结构(<- <- <- <- )或所有四个都是由实现的接口(或通过混合实现,一些是父类,另一些是接口......) .ItemEatableItemEatableFoodFastFoodHamburgerHamburger

Java 不允许通过名称来区分类和接口,甚至没有一个普遍接受的约定。


推荐阅读