OLÁ PESSOAL!! estou começando a programar em java, porem estou com um pouquinho de dificuldade, em herança e em construtores minha duvida é o seguinte: segue o codigo abaixo sobre herança e construtores:

// Pessoa.java
public class Pessoa {
private String nome;
protected double renda;
public String getNome() {
return nome;
}
public void setNome(String novoNome) {
nome = novoNome;
}
public double getRenda() {
return renda;
}
public void setRenda(double novaRenda) {
renda = novaRenda;
}
public double calculaImposto() {
return 0;
}
}

// PessoaJuridica.java
public class PessoaJuridica extends Pessoa {
private int cgc;
private double aliquota1 = 0.15;
private double aliquota2 = 0.10;
public int getCgc() {
return cgc;
}
public void setCgc(int novoCgc) {
cgc = novoCgc;
}
public double calculaImposto() {
double imposto = renda * aliquota1;
imposto = imposto + renda * aliquota2;
return imposto;
}
}

// PessoaFisica.java
public class PessoaFisica extends Pessoa {
private int rg;
private double aliquota = 0.20;
public int getRg() {
return rg;
}
public void setRg(int novoRg) {
rg = novoRg;
}
public double calculaImposto() {
double imposto = renda * aliquota;
return imposto;
}
}

Poderia declarar construtores diferentes do default para as classes Pessoa, PessoaJuridica e PessoaFisica? Como seriam eles? E qual a função em declarar uma variavel com atributo protected? seria q ela poderia ser usada na classe e na subclasse?

desde já agradeço atenção

ate++