В общем, да, возвращаемый тип метода переопределения может быть другим. Но это не так. В этом случае есть некоторые случаи.
Случай 1: Если тип возврата является примитивным типом данных или void.
Выход: если тип возврата недействителен или примитив, тогда тип данных метода родительского класса и метод переопределения должны быть одинаковыми. например если тип возвращаемого значения - int, float, string, то он должен быть таким же
Случай 2: Если тип возвращаемого значения является производным типом данных:
Выход: если тип возвращаемого значения родительского класса метод является производным типом, тогда тип возврата метода переопределения - это тот же производный тип данных подкласса к производному типу данных. например Предположим, что у меня есть класс A B - подкласс к A C - подкласс к B D - это подкласс к C, то если если суперкласс возвращает тип A, то переопределяющий метод является подклассом, который может возвращать типы A, B, C или D i.e его подтипы. Это также называется ковариацией.
Я обнаруживаю, что на моем Fedora 7 существует команда точки монтирования.
От точки монтирования человека:
NAME
mountpoint - see if a directory is a mountpoint
SYNOPSIS
/bin/mountpoint [-q] [-d] /path/to/directory
/bin/mountpoint -x /dev/device
, По-видимому, это идет с sysvinit пакетом, я не знаю, доступна ли эта команда в других системах.
[root@myhost~]# rpm -qf $(which mountpoint)
sysvinit-2.86-17
Не доверие mount
, /etc/mtab
, /proc/mounts
, и т.д.:
if [ `stat -c%d "$dir"` != `stat -c%d "$dir/.."` ]; then
echo "$dir is mounted"
else
echo "$dir is not mounted"
fi
, Когда $dir
точка монтирования, она имеет другой номер устройства, чем его родительский каталог.
преимущество по альтернативам, перечисленным до сих пор, - то, что Вы ничего не должны анализировать, и это делает правильную вещь если dir=/some//path/../with///extra/components
.
оборотная сторона - то, что это не отмечает /
как точку монтирования. Ну, это достаточно легко к особому случаю, но все еще.
Используя GNU находят
find <directory> -maxdepth 0 -printf "%D"
, даст номер устройства каталога. Если это отличается между каталогом и его родителем затем, у Вас есть точка монтирования.
Добавляют/. на имя каталога, если Вы хотите, чтобы символьные ссылки на различные файловые системы рассчитали как точки монтирования (Вы будете всегда хотеть его для родителя).
Недостатки: использование GNU находит так меньше портативного устройства
Преимущества: точки монтирования Отчетов, не зарегистрированные в/etc/mtab.
if mount | cut -d ' ' -f 3 | grep '^/mnt/disk РЕДАКТИРОВАНИЕ: идея Используемого Мороженого использовать сокращение.
> /dev/null ; then
...
fi
РЕДАКТИРОВАНИЕ: идея Используемого Мороженого использовать сокращение.
for mountedPath in `mount | cut -d ' ' -f 3`; do
if [ "${mountedPath}" == "${wantedPath}" ]; then
exit 0
fi
done
exit 1
df $path_in_question | grep " $path_in_question$"
Это установит $?
после завершения.
Вот вариант с "df-P", который, как предполагается, является портативным:
mat@owiowi:/tmp$ f(){ df -P | awk '{ if($6 == "'$1'")print }' ; }
mat@owiowi:/tmp$ f /
/dev/mapper/lvm0-vol1 20642428 17141492 2452360 88% /
mat@owiowi:/tmp$ f /mnt
mat@owiowi:/tmp$ f /mnt/media
/dev/mapper/lvm0-media 41954040 34509868 7444172 83% /mnt/media