СоХабр закрыт.
С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.
/* Пример №7 */
//
class OuterClass {
...
class InnerClass {
...
}
}
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
* Пример №8 */
package inner;
/**
*
* @author Ar20L80
*/
public class Outer {
class InnerClass {
}
Outer(){
}
public static void main(String[] args) {
Outer outerObject = new Outer();
Outer.InnerClass innerObject = outerObject.new InnerClass(); // создание экземпляра внутреннего класса
}
}
/*
Учебный пример №9
Внутренние классы
Получить ссылку на внешний класс в конструкторе внутреннего
*/
package inner;
/**
*
* @author Ar20L80
*/
public class Outer5 {
class Inner5{
private Outer5 myOuter;
Inner5(){
myOuter = Outer5.this;
}
}
public static void main(String[] args){
Outer5 outer5 = new Outer5();
}
}
/*
Учебный пример №10 .
Внутренние классы
*/
package inner;
/**
*
* @author Ar20L80
*/
class AnyClass{} // класс от которого наследуем Inner6
public class Outer6 {
class Inner6 extends AnyClass{
// тут мы унаследовали внутренний класс от AnyClass{}
// и можем расширить функциональность класса AnyClass{}
// и класса Outer6
}
}
/*
Учебный пример №11
Внутренние классы
*/
package inner;
/**
*
* @author Ar20L80
*/
class AnyClass2{
void anyClass2Method(){}
}
public class Outer7 {
private int iOuterVar;
private class Inner7 extends AnyClass2
{
private Outer7 out7;
public Inner7() {
out7 = Outer7.this; // ссылка на окружающий класс
}
private int anyMethodOfInner7(){
super.anyClass2Method();// можем вызвать метод нашего супер класса AnyClass2
return out7.iOuterVar; // можем обратиться к переменным
// и методам Outer7
}
}
}
«Каждый внутренний класс может независимо наследовать определенную реализацию.Чтобы использовать внутренний класс за пределами обычных методов «окружающего» класса необходимо создать объект внутреннего класса следующим способом.
Внутренний класс не ограничен при наследовании в ситуациях, где внешний класс уже наследует реализацию.»
комментарии (11)