Qual o erro?

Ola pessoal tudo bem?
Toh aki tentando aprender herença e tals…
Estou seguindo exatamente e o codigo da apostila e então…BANG!
me aparece um erro q não consigo descobri o pq.
Poderiam me ajudar?
desde de ja obrigado!

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication88;

/**
 *
 * @author K4MU1
 */
public class Person {
    protected String nome;
    protected String endereco;

    //Contrutor Padão
    public Person()
    {
        System.out.println("Inside Person: Constructor");
        nome = "";
        endereco = "";
    }

    //construtor com dois parametros
    public Person( String nome, String endereco)
    {
        this.nome = nome;
        this.endereco = endereco;
    }

    //Metodos Assesores e Modificadores
    public String getNome()
    {
        return nome;
    }
    public String getEndereco()
    {
        return endereco;
    }
    public void setNome(String Nome)
    {
        this.nome = Nome;
    }
    public void setEndereco(String End)
    {
        this.endereco = End;
    }

    public class Estudante extends Person{
        public Estudante(){
            System.out.println("Inside Student:Constructor");
            
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Estudante Allyson = new Estudante();
        // TODO code application logic here
   
    }

}

Qual a mensagem de erro que da?

qual é o erro?

Esta na linha 61
a mensagem é: non-static variable this cannot be refereced from a static context

O erro é que a classe Estudante é interna à classe Person, então para chamá-la corretamente você deve modificar o main para o seguinte:

[code]public static void main(String[] args) {
Estudante Allyson = new Person().new Estudante();
// TODO code application logic here

}[/code]

você precisa instanciar a classe Person primeiro e a partir dessa instãncia chamar a classe Estudante.

A classe interna Estudante tem que ser declarada como static

public static class Estudante extends Person{  
        public Estudante(){  
            System.out.println("Inside Student:Constructor");  
        }  
    }  

Sua apostila não deve ter ensinado classes internas; em vez de usar uma “classe interna estática”, que é coisa muito complicada, separe as classes “Person” e “Estudante” em dois arquivos separados (Person.java e Estudante.java), e os compile. Dá menos problemas.

Pq vc esta usando classe interna?? Pq nao cria dois arquivos distintos, acho q é mais facil para visualização e tb para o aprendizado.

public Person
    {   ...
    }  

e depois

public class Estudante extends Person
{...
}

:lol: :lol: :lol: