我有以下代码,其中有一个父类及其子代.我试图确定代码如何从使用多态性中受益.
class FlyingMachines {
public void fly() {
System.out.println("No implementation");
}
}
class Jet extends FlyingMachines {
public void fly() {
System.out.println("Start, Taxi, Fly");
}
public void bombardment() {
System.out.println("Throw Missile");
}
}
public class PolymorphicTest {
public static void main(String[] args) {
FlyingMachines flm = new Jet();
flm.fly();
Jet j = new Jet();
j.bombardment();
j.fly();
}
}
Run Code Online (Sandbox Code Playgroud)
多态性的优点是什么,flm.fly()并j.fly()给我相同的答案?
我过去曾经ToString()谦虚地使用过,而且在很多情况下我发现它非常有用.但是,我对这种方法的使用几乎没有理由将这种方法放在其他方面System.Object.我的猜测是,在进行的工作和为了提出.NET框架的初始设计而举行的会议期间的某些时候,我们认为必须 - 或者至少非常有用 - 包含一个ToString()方法,由.NET框架中的所有内容实现.
有谁知道具体原因是什么?我是否错过了大量ToString()证明有用的情况System.Object?最初的原因是ToString()什么?
非常感谢!
PS - 再说一遍:我不是在质疑这个方法,也不是暗示它没有用,我只是想知道是什么让它变得有用System.Object.
旁注 - 想象一下:
AnyDotNetNativeClass someInitialObject = new AnyDotNetNativeClass([some constructor parameters]);
AnyDotNetNativeClass initialObjectFullCopy = AnyDotNetNativeClass.FromString(someInitialObject.ToString());
这不是很酷吗?
EDIT(1):
(A) - 基于一些答案,似乎.NET语言从Java继承了这一点.所以,我正在为主题和标签添加"Java".如果有人知道为什么这是用Java实现的,那么请说清楚!
(B) - 静态假设FromString与序列化:当然,但这是一个完全不同的故事,对吗?