/ / Java permitindo herança múltipla - java, herança

Java permitindo herança múltipla - java, herança

Estou confuso em relação a um conceito em herança múltipla. Eu tenho três classes A, B e C.

Class A {
// ...
}

Class B extends A {
// ...
}

Class C extends B {
// ...
}

Eu sei que esta é uma prática ruim de múltiplosherança e eu também li java permite herança múltipla através de interfaces. Mas eu não estou recebendo nenhum erro no código acima. Por favor, alguém pode me explicar com um exemplo claro sem usar a interface. Obrigado!!

Respostas:

2 para resposta № 1

Isso não é multi-herança. Cada turma tem exatamente uma superclasse direta. Se o seu exemplo foi considerado multi-herança, você não poderá usar o extends palavra-chave, uma vez que cada classe já estende por padrão Object classe.

Multi-hereditariedade seria

class C extends A,B {}

E isso é ilegal em Java.


2 para resposta № 2

Seu código não contém herança múltipla e é, na verdade, a sintaxe legal do Java. Herança múltipla refere-se a um caso em que uma classe diretamente estende duas superclasses. Por exemplo:

public class MyClass extends MyFather, MyMother {
}

Note que esta é, obviamente, a sintaxe Java ilegal.


2 para resposta № 3

"Herança múltipla" em Java basicamente significa herdar múltiplas interfaces, não herdando múltiplas implementações.

Agora, há um novo recurso do Java 8 que permite fazer algo como várias heranças de implementações reais, por meio de interfaces e algo chamado métodos padrão. Eu recomendo fortemente que você realmente domine o básico do Java antes de testá-lo. Quando estiver pronto, aqui está um bom tutorial sobre métodos padrão.


1 para resposta № 4

O código que você tem escrito acima é um exemplo de multinível herança não herança múltipla.

Herança Múltipla é como:

class A extends B,C {

//this code is not valid in JAVA

}

E, se você quiser usar interfaces para implementar uma estrutura como herança múltipla, então você pode usar:

interface test_interface1{
/*all the methods declared here in this interface should be the part
** of the class which is implementing this current interface
*/
}

Similarmente :

interface test_interface2{

}

Então, crie uma classe TestClass como:

class TestClass implements test_interface1,test_interface2 {

//now you have to use each and every method(s) declared in both the interfaces
// i.e. test_interface1 & test_interface2

}

Você também pode usar uma sintaxe como:

class TestClass extends AnyClass implements test_interface1,test_interface2 {
/* but do keep in mind - use extends keyword before implements
** and now you know you cannot use more than 1 class names with extends keyword
** in java.
*/