clase interna humilde, que cuenta con línea (no estático, estático, local, anónimo)

¿Cuál es la clase interna

Será colocado dentro de una definición de clase define otra clase (clases anidadas), que es una clase interna.

 

¿Cuál es el uso de clases internas

Clase que permite una cierta lógica interna clases relacionadas se agrupan, la clase interna entender y ser capaz de comunicarse fuera de la clase .

En un cierto punto de vista, la clase interna implementa herencia múltiple. (Cada clase interna puede heredar independientemente () implementación de la interfaz, independientemente de la clase externa no tiene aplicación heredada.)

 

Cómo utilizar las clases internas

public class out{//外部类

    class in{//内部类
        int i=0;
        public int test(){}
    }


    //比较典型的情况是,外部类有一个可以返回内部类对象的方法
    public in to(){
        return new in(); //创建并初始化一个内部类对象
    }



    public static void main(String[] args){
        out o = new out();
        //如果想要在外部类的非静态方法中创建内部类对象
        //那么必须具体指明对象的类型:OuterClassName.InnerClassName
        out.in  i =o.to(); 
    }

}

Cuando usamos la clase interna en un método de la clase externo, utilizando clase ordinaria no es diferente.

 

Aprenda clase interna fuera de la clase y se puede comunicar, esto es cómo hacerlo?

Al generar un objeto de la clase interna que lo ha generado y el contacto de objeto externo: crear un objeto de la clase interna será tranquila captura de Mimi una referencia de objeto externo! Cuando se accede a un miembros de la clase externos con objeto de la clase interna, la cita secreta viene muy bien. Esta es la razón de las clases internas se puede utilizar fuera de la clase! Así que todos los miembros de la clase de objeto de acceso interno a objeto de la clase externa puede ser incondicional!

 

Echemos un vistazo a la frase " para crear un objeto de la clase interna será tranquila captura de Mimi una referencia de objeto externo! " ¿Qué hacer alusión? Estudiantes! !

Antes de sugerir que crear un objeto de la clase interna, objeto externo ya existe un poco ~

Por lo que esta frase es para crear un objeto de clase necesidades internas que ser creado con el objeto externo razones (las clases internas estáticas excepto el lector de los adultos piensan acerca de por qué ~)

//所以当你想直接创建内部类对象时,你不能像下面这样
in i =new in();

//你得使用外部类对象来创建内部类对象
out.in i = out.new in();
//完美(绕晕)~

 

Los lectores OS: wow, que dice un montón, me siento una clase interna y engorroso e inútil. . .

Autor: Creo que sí. . . .

clases interna: "Me puede mostrar !! lento!"

clase interna humilde, que cuenta con línea

Ya sabes, como una especie de dignidad, podemos establecer su propio acceso, si me impuse como privada, a continuación, sigue

class out{
    private class in_1{
        //private内部类:只有外部类看得到我能访问我,其他类不能访问。
    }
       
    protected class in_2{
        //protected内部类:只有外部类+与外部类同一个包的类+我的子类可以才可以访问我
    }

}

¿Cuáles son los beneficios manta, puede evitar por completo cualquier tipo de codificación depende de esta manera, y completamente ocultar los detalles de implementación .

 

Las clases internas: Espera, yo no estaba, él mismo. . . Para demuestre no más (completamente oculto). . . .

clases interna: no se preocupe no se preocupe ... (empecé a sentir pánico) para las diversas necesidades de los master de oro de su padre, puedo distinguir diferentes clases interna. . .

 

clases internas no estáticos

las clases internas no estáticos es en realidad el ejemplo anterior, vamos a saber más unos cuantos puntos abajo.

public class out{//外部类
    int num = 30;
    class in{//内部类
        int num=20;
        public int test(){
            int num = 10;
            System.out.println("局部变量num:"+age);
            //10 局部变量,直接变量名

            System.out.println("内部类成员变量num:"+this.age);
            //20 内部类成员变量:this.变量名

            System.out.println("外部类成员变量num:"+out.this.age);
            //30 外部类成员变量:外部类名.this.变量名
        }
    }

    public static void main(String[] args){
        out.in  i = new out().new in();//创建内部类对象
    }

}

clase interna no estáticos no permite métodos estáticos, variables estáticas y bloque de inicialización.

¿Por qué?

1, un clases no estáticos internos son parte de una instancia de clase, pero no forma parte de la clase (variables estáticas son parte de una clase, sin importar el ejemplo), tanto en los conflictos.

2, las personas llaman a las clases internas no estáticos, y no obtienen empleos siguen tratando de robar las clases internas estáticas.

 

El método de la clase estática externa, bloque de código estático no puede acceder al tipo no estática interna, que comprende una clase interna no se puede utilizar variable no estática, cree una instancia.

 

Quiere interna de clase tiene un método estático Zezheng manta? Llegamos a las clases internas estáticas más.

clases internas estáticas

class out{
    static class in{

    }
}

创建静态内部类对象
out.in  i = new out.in();//注意:没有创建外部类对象哟~

clases internas estáticas es un niño independiente, ya no tiene que depender de la parte exterior de la clase. Puede ser visto como un miembro estático fuera de la clase.

 

Estáticos y no estáticos clases internas dentro de las diferencias de clase:

1, las clases internas estáticas no dependen de la clase externa, no habrá referencias a la clase externa.

clases internas 2, no estáticos no pueden ser declarados estática.

 

 

 

 

clase interna parcial

En uno define una clase en cualquier lugar interior dentro del método , dicha clase a se llama clases internas locales internos.

clase interna local ¿para qué sirve?

1, para lograr un cierto tipo de interfaz, puede crear y devuelve una referencia a él.

2, cuando la necesidad de resolver un problema complejo, tiene la intención de crear una clase para ayudar a resolver el problema, pero no quieren esta clase está disponible para el público. (Ah, huelo un toque de sabor clase interna privada)

//代码出自《Java编程思想》(是的,我顶不住了,小小的脑袋放弃了思考)

public class Parcel5{
   
    public Destination destination(String s){
        class PDestination{
            
        }
    }
    //PDestination类是Destination方法的一部分,而不是Parcel5类的一部分
    //除了Destination方法可以访问PDestination类外,其他均不能访问。
    //即:方法外不能访问局部内部类。
}

El método no se puede acceder fuera de la clase interna local!

variables locales similares, las clases internas parciales no pueden tener especificadores de acceso, ya que no es parte de la clase envolvente, pero se puede acceder en el bloque de corriente constante, y todos los miembros de esta clase de periféricos.

Esto no lo hace, o no se presentó a sí mismo todavía. . .

 

clases internas anónimas

No sólo puede esconderse, aunque el nombre no puede mostrar. .

Nombre de la clase interna es una clase interna anónima, es adecuado para aquellos que sólo necesitan una clase, como un monitor de teclado.

public class Parcel7{
    public Contents contents(){
        return new Contents(){    //“不配”拥有姓名
            private int i=0;
            public int value(){return i;}
        }
    }
}

//它相当于

public class Parcel7{
    class myContents implements Contents{
        private int i=0;
        public int value(){return i;}
    }
    
    public Contents contents(){return new myContents();}

}

Cuando se desea utilizar una clase interna anónima definido en objetos externos, las referencias argumento compilador espero que sea definitiva

public class Parcel9{
    public Destination destination(final String dest){  //final 警告
        return new Destination(){
            private String label = dest;   //用到了外部类的对象
        }
    }
}

Anónimos características de clase interno:

1, sólo una instancia.

2, no puede tener constructor.

3, no se puede definir estático

Publicado 38 artículos originales · ganado elogios 6 · vistas 1897

Supongo que te gusta

Origin blog.csdn.net/weixin_43827227/article/details/104931911
Recomendado
Clasificación