da classe externa por mais queeste esteja com o modificador privado conforme o codigo abaixo:publicclassClasseExterna { privateintx= 7; privateString textoDeIncentivo="VaiMedina!! #BrazilianStorm"; classClasseInterna { publicvoidgetTextoDeIncentivo(){ System.out.println( "Outerx is "+ClasseExterna.this.textoDeIncentivo); } publicvoidgetXExterno() { System.out.println("Outerx is "+ ClasseExterna.this.x); } }//fechaclasseinterna} Conformepodemos ver por mais que os membors x e textoDeIncentivosejam privados, a ClasseInterna com uma referencia a classe externa,consegue acessar normalmente. Existe forma mais simples de acessar osmembros externos pela classe interna, sem a utilizacao dareferencia da classe externa conforme abaixo: publicvoidgetTextoDeIncentivo(){ System.out.println("Outerx is "+ textoDeIncentivo); } publicvoidgetXExterno() { System.out.println("Outerx is "+ x); }Maseu nao a recomendo, prefiro sempre que possivel utilizar areferencia thise a referencia da classe externa caso necessario.O deselnvolvedor que pergar seu codigo para maniutencao tambemagradecera a gentileza, ate porque se por algum motivo acabaremtendo a necessidade de sobrescrever a variavel na classe interna,nao afetara o resto da aplicacao por estar bem codificadaconformemostraremos a seguir:publicclassClasseExterna { privateintx= 7; privateString textoDeIncentivo="VaiMedina!! #BrazilianStorm"; classClasseInterna { privateintx=3; publicvoidgetTextoDeIncentivo(){ System.out.println("textoDeIncentivoe "+ textoDeIncentivo); System.out.println("outextoDeIncentivoe"+ ClasseExterna.this.textoDeIncentivo); } publicvoidgetXExterno() { System.out.println("xe"+ ClasseExterna.this.x); } publicvoidgetXInterno(){ System.out.println("this.xe"+ this.x); System.out.println("xe"+ x); } }//fechaclasseinterna} Aoler o codigo acima, veremos que temos um atributo sobrescrito naclasse interna, para imprimir esta variavel precisamos referenciar aclasse externa, depois a classe interna, para finalmente asvariaveis ClasseExterna.this.x.Usando somente o nomeda variavel comoanteriormente mencionamos,ira o programdor poderaestar se equivocando,pensando que esta referenciando a variavel externa quando naverdade esta referenciando oa classe interna. Valelembrar que caso nao esteja sobrescrevendo a variavel e totalmenteaceitavel colocar somente a nomclatura da variavel confomeutilizado na implressao da variavel textoDeIncentivo.' Instanciaruma classe ou se preferir criar um objeto de uma classe interna etao simples como qualquer outra, comecamos usando a classe dereferencia, damos um nome a referencia que sera criada depois apalavra reservada newefinalizamos com a classe de instancia conforme abaixo:ClasseInternaci = newClasseInterna(); Valelembrar antes que a instanciacao conforme acima so sera validacaso realize pordentro da classe ClasseExternaisto porque nao e possivel instancias somente a classe internasem ter uma referencia da classe externa, o que e totalmente facilde compreender ne? Vejamos a logica.... Se a classe interna evista como um membro qualquer da classe externa, imagine como iremospor exemplo pegar o atributo textoDeIncentivoda ClasseExterna sem a referencia da mesma? Para instanciarmos umaclasse interna em outra classe, precisaremossempre daclasse externa comoreferencia:ClasseExternace = newClasseExterna();ce.getClasseInterna();//possuiumalinhaClasseInterna ci= new ClasseInterna(); //ouClasseExterna.ClasseInternaci= ce.newClasseInterna(); //ouClasseExterna.ClasseInternaceci= newClasseExterna().newClasseInterna(); Todasas variaveis declaradas acima, possuem uma referencia a classeexterna e a classe interna de formas diferentes, mas todas conseguemacessar qualquer metodo ou qualquer atributo de ambas as classes.Classesinternas locais de metodos Umaclasse interna local de metodo conforme o nome ja diz e umaclasse que e declarada internamente em um metodo podendo ser em umaclasse ou ate mesmo emum metodo que ja se encontradentro de uma classe interna. Aclasse local (forma que sera dito de agora em diante) nuncasera utilizada fora do metodo que foidelclarado.Exemplo:publicvoidgetClasseLocalInterna() {//abremetodo classLocalInterna { //iniciaclasseinterna publicvoidgetClasseLocalInterna() {//iniciametododaclasse System.out.println("Metodode uma Classe Local Interna"); }//fechametododaclasse }//fechaclasseinterna} Diferentedas outras classesinternas quedescrevemos ate agora, a classe local nao podera ter seumodificador como public,private,protectedou staticsobrandoentao abstracte final. Oque mais deveremos prestaratencao equantoas variaveis que sao utilizadas dentro de uma classe local. Naoe possivel utilizar variaveis locais deummetodo em