抽象方法不是应该被重写后,才能使用吗?
如下面一个简单FileLocking 程序
import java . io . * ;
import java . nio . channels . * ;
import java . util . concurrent . * ;
class FileLocking
{
public static void main (String [ ] args ) throws Exception
{
FileOutputStream fos = new FileOutputStream ("File.txt") ;
FileLock fl = fos . getChannel ( ) . tryLock ( ) ;
if (fl != null)
{
System . out . println ("The file is locked") ;
TimeUnit . SECONDS . sleep (5) ;
fl . release ( ) ;
System . out . println ("The file is released") ;
}
fos . close ( ) ;
}
}
这行返回的是FileLock的子类FileLockImpl(即所谓“父类引用,子类对象”),这个子类实现了FileLock的各种抽象方法,因此release()、isValid()等方法实际调用的是FileLockImpl的。