Me deparei com um problema e gostaria de tirar algumas dúvidas com vcs:
bem tenho dois package no package 1 eu tenho um arquivo com 3 classes
A, B ,C mais estou com um problema para acessar as classes B e C. Bem eu tenho que atribuir pelomenos para uma o modificador de acesso public em alguma classe do meu arquivo, mais o modificador de acesso public só está dando certo para classe que não herda nenhuma quer dizer somente para a super classe de B,C que neste caso é a A, intão á lógica para acessar um classe de outro package é colocar modíficador public em somente uma classe dentro do mesmo arquivo que herde apenas da classe Object…?
Chamada de classe
8 Respostas
Suas classes estão em um mesmo arquivo???
Um arquivo só pode ter uma classe public, então, separe-as em arquivos diferentes.
T+
Tudo bem, o que eu quero saber é se eu posso chamar uma classe que herda de outra dentro do mesmo arquivo em outro package. ou tenho várias classes dentro do meu arquivo como eu falei anteriormento eu coloquei o modificador de acesso public em somente uma, também porque nas que herdam dela o compilador está gerando erro, sei que tem outras formas de fazer o que eu quero confirma é: Não tem jeito de colocar o modificador de acesso public em um arquivo que contenha uma classe que herde de outra classes além da classe Object.
Não, porque para acessar classes de outro package elas devem ser public.
T+
Acho que não fui claro vou colocar o código pra vc ver:
package com.br.funcionario;
public class W
{
public static final int ID_CLASSE_W=123456;
public W()
{
}
public void mostraMsm()
{
System.out.println("Classe W");
}
}
class BW extends W
{
public static final int ID_CLASSE_W=123456;
public BW()
{
}
public void mostraMsm()
{
System.out.println("Classe BW");
}
}
class CW extends BW
{
public static final int ID_CLASSE_W=123456;
public CW()
{
}
public void mostraMsm()
{
System.out.println("Classe CW");
}
}
Você percebeu que eu coloquei public somente na classe que herda somente de Object, essa eu posso acessar atráves de outro package mais se eu fazer assim:
package com.br.funcionario;
public class W
{
public static final int ID_CLASSE_W=123456;
public W()
{
}
public void mostraMsm()
{
System.out.println("Classe W");
}
}
class BW extends W
{
public static final int ID_CLASSE_W=123456;
public BW()
{
}
public void mostraMsm()
{
System.out.println("Classe BW");
}
}
public class CW extends BW
{
public static final int ID_CLASSE_W=123456;
public CW()
{
}
public void mostraMsm()
{
System.out.println("Classe CW");
}
}
Repare que a classe public agora é public class CW extends B mais o compilador está mostrando um erro daí então eu concluí que vc soh pode colocar o modificador de acesso public somente em uma classe do mesmo arquivo que não herde de Object gostaria de sabe se essa minha conclusão e correta.
Repare que a classe public agora é public class CW extends B mais o compilador está mostrando um erro daí então eu concluí que vc soh pode colocar o modificador de acesso public somente em uma classe do mesmo arquivo que não herde de Object gostaria de sabe se essa minha conclusão e correta.
Aê amigo,só poderá existir uma classe pública em um arquivo e essa mesma tem que coincidir com o nome do arquivo.Agora em relação a classes que não herdam de Object é falso, em java todas as classes herdam de Object!!
Valew!
O problema é que você colocou 2 classes public em um mesmo arquivo:
public class W {...
public class CW extends BW { ...
T+
A herança pelo Object é implícita.
Faltou esse detalhe… :thumbup: