Является ли эта статическая функция println
в классе из класса
из пространства имен System
?
namespace System { class out { static println ... }
Как я могу интерпретировать это имя? И где в JRE эта функция определена? В java.lang. Система
/ java.lang.Object
?
Нет. Фактически out
является статическим членом в классе System
(не как в .NET), являясь экземпляром PrintStream
. А println
- это обычный (перегруженный) метод класса PrintStream
.
См. http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out .
На самом деле, если бы out
/ err
/ в
были классами, они были бы названы с заглавной буквы ( Out
/ ] Err
/ В
) из-за соглашения об именах (игнорирование грамматики).
Система
- это класс, у которого есть публичное статическое поле out
. Так что это больше похоже на
class System
{
public static PrintStream out;
}
class PrintStream
{
public void println ...
}
. Это небольшое упрощение, поскольку класс PrintStream
на самом деле находится в пакете java.io
, но он достаточно хорош, чтобы показать взаимосвязь между материалами.
Проверьте следующую ссылку:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html
Вы ясно увидите, что:
System
- это класс в пакете java.lang
.
out
является статическим членом класса System
и представляет собой экземпляр java.io.PrintStream
.
println
- это метод класса java.io.PrintStream
. Этот метод перегружен для печати сообщения в место вывода, которое обычно представляет собой консоль или файл.