Тут поліморфізм організований по контейнерному принципу. Аналогом можуть служити generic'і.Наприклад, для об'єктів print і plot, як видно, основною і єдиною є функція UseMethod("и'мя об'єкта").

полиморфизм S3 классов

Вона отримує доступ до всіх методів контейнера print и plot. Самі контейнери містять методи, які визначаються в різних об'єктах.

полиморфизм S3 классов
Зірочка біля назви позначає, що метод знаходиться не в ядрі ({base}),а в іншому просторі. Тут під ядром будемо розуміти Global Enviroment. Для виявлення відповідного Package'а, який треба підключити. Найкраще скористатися методом getAnywere("метод"):
> getAnywhere(plot.lm)
A single object matching ‘plot.lm’ was found
It was found in the following places
registered S3 method for plot from namespace stats
namespace:stats

Важко говорити про єдиний стиль, але використання контейнерів типуprint, plot, summary и etc. може полегшити життя програміста, оформляючи ці функції просто:
<имя контейнера>.и'мя_S3_класу.
print.aeTest <- function(ae){
cat("\n Skewness=",A,"\tKurtosis=",E,"\n")
cat("\n D(A)=",D.A,"\tD(E)=",D.E,"\n")
if(abs(A)<=3*sqrt(D.A) && abs(E)<=5*sqrt(D.E))
cat("\nYour sample is normal \n")
else
cat("\n This is non-parametric sample?\n")
}

print.aeTest <- function(ae){
cat("\n Skewness=",A,"\tKurtosis=",E,"\n")
cat("\n D(A)=",D.A,"\tD(E)=",D.E,"\n")
if(abs(A)<=3*sqrt(D.A) && abs(E)<=5*sqrt(D.E))
cat("\nYour sample is normal \n")
else
cat("\n This is non-parametric sample?\n")
}

Тоді виводити об'єкт на друк можна просто:
> obj.ae <- aeTest(x,y)
> obj.ae

Skewness= -0.1131924 Kurtosis= 2.766801

D(A)= 0.09211553 D(E)= 0.33397

Your sample is normal

У вивод додана перевірка на нормальність за асиметрією та ексцессом. Plot дозволяє отримати картинку розбиття (красний пунктир - вибірка, синя сплошна - нормальне розбиття із параметрами вибірки).

>plot(obj.al)

Якщо порівняти вивод методів контейнера plot до і після завантаження класу, то видно, що з'явився plot.al, наш метод.

полиморфизм S3 классов

полиморфизм S3 классов

В наступній замітці буде розглянута небезпечністьS3 классов, і необхідно їх заміни S4 класами.