Из предыдущих исследований мы уже знаем, что класс может иметь два важных члена: переменные-члены и методы . Фактически, у класса также есть один тип членов: внутренний класс. Когда класс определяет другой класс, мы называем такой класс внутренним классом , а класс, содержащий внутренний класс, называется внешним классом внутреннего класса.
1) Переменные-члены внешнего класса внутреннего класса по-прежнему действительны во внутреннем классе, и методы внутреннего класса также могут вызывать методы внешнего класса.
2) Переменные класса и методы класса не могут быть объявлены в теле внутреннего класса. В теле внешнего класса внутренний класс может использоваться для объявления объектов как членов внешнего класса.
3) Внутренний класс может использоваться только его внешними вложенными классами. Другие классы не могут использовать внутренний класс определенного класса для объявления объектов.
Поскольку переменные-члены внешнего класса внутреннего класса действительны во внутреннем классе, взаимодействие между внутренним классом и внешним классом очень удобно.
Например:
classRedCowForm{staticStringformName;RedCowcow;//Внутренний объект объявления класса RedCowForm(){}RedCowForm(Strings){cow=newRedCow(88,66,2000);formName=s;}publicvoidshowCowMess(){cow.speak();}classRedCow {//Объявление внутреннего класса StringcowName=calf;intheight,weight,price;RedCow(inth,intw,intp){height=h;weight=w;price=p;}voidspeak(){System.out.println( Я +cowName+, рост+рост+см, вес+вес+кг, живет в +formName);}}}publicclassMain{publicstaticvoidmain(String[]args){RedCowFormform=newRedCowForm(dotcpp Farm);form.showCowMess() form. корова.speak();}}
Результаты бега следующие:
Я теленок, рост 88 см, вес 66 кг. Я теленок, рост 88 см, вес 66 кг.
Примечание . Имя файла байт-кода внутреннего класса, созданного компилятором Java, отличается от имени обычного класса. Формат имени файла байт-кода, соответствующего внутреннему классу, — « имя встроенного класса $ имя внутреннего класса ». Например: имя файла байт-кода внутреннего класса в приведенном выше примере должно быть RedCowForm$RedCow.class.
Внутренние классы могут быть изменены как статические внутренние классы. Статические внутренние классы — это статический тип данных во встроенных классах. Программы могут использовать статические внутренние классы в других классах для создания объектов. Однако статические внутренние классы не могут работать с переменными-членами встроенных классов.
Ладно, каждый может поэкспериментировать на компьютере и переварить и усвоить содержание этого раздела.