ふと思いついたので質問。

abstract classって、例えば
abstract class Personがあって、それを継承したChildc classもあるとする。
そこで
Person person = new Child();
person.doSomething(); ←Personクラスで定義されている抽象メソッド、Childクラスで実装済み
ってできるの?なんか、abstractなんとかエラーってのが出るんだが、interfaceだったらばっちりできるのに。
わざわざキャストしないと呼べないなら大して役にたたねぇなぁと思う。

あと、javaって、新しく書いているクラスの中で他のクラス(コンパイル済み)を継承なり、使うなりしてたら、
書いているクラスをコンパイルするには
中で使ったクラスのソースがいるの?classファイルがいるの?

だれか教えてちょ