투표를 시작하기 전에 먼저이 질문을 읽으십시오. 여기서 불쾌한 점을 시작하려고하지는 마십시오.다중 상속
이 질문에 대한 유일한 이유는 Java 및/또는 C# 중 하나를 더 많이 알아야하기 때문에 더 많이 고용 될 수 있다는 사실을 점점 더 잘 알고 있습니다. 나는 다중 상속이 J와 C#으로 금지되어 있음을 알 수
: 여기에 좋아
질문입니다. 나는 같은 것을 할 경우 (내가 두 클래스 B와 A로부터 상속하는 클래스를하고 싶은 때문에)하지만 :이 이해
는//code in Java
public class B
{
public void methodFromB()
{
}
}
public class A extends B
{
public void methodFromA()
{
}
}
public class C extends A
{
public void methodFromC()
{
}
}
그래서 사실 지금까지, 나는 그들 모두로부터 상속 않는다 (A와 B 그리고 예, 이것에 대한 형식적인 설명은 객체 A가 전문 B라는 것을 이해합니다. 그러나 내가 원한다면 그다지 적지는 않습니다. 그렇지만 예쁜 것처럼 보이지 않습니다)
대신에 하나의 선언에서 이것을 수행하는 것부터 먼저 다른 클래스로부터 상속받은 클래스 하나를 생성 한 다음 그 클래스에서 파생시켜야합니까?
재미있는 것. 위의 클래스를 NetBeans에서 선언 했으므로 클래스 C의 인스턴스를 만든 후 (main에서)이 클래스에 정의 된 메서드 인 methodFromC를 호출 할 수 없습니다.
그 이유는 무엇입니까?
감사합니다.
"(NetBeans에서) 위와 같은 클래스를 선언하면 클래스 C의 객체를 만든 후 (main에서) methodFromC를 호출 할 수 없습니다"에서 작업하려는 코드의 샘플을 게시 할 수 있습니까? – Bruno
이것은 다중 상속의 예가 아니며, 신이 의미하는대로 일반적인 상속 일뿐입니다. Java voids가 다중 상속을하는 곳은 A와 B를 모두 구현하는 클래스 Ba와 Bb가 있고 그 결과 다이아몬드 모양의 구조가됩니다. Ba와 Bb가 둘 다 public 메서드 m()을 재정의 할 때 Confusion이 설정되어 C가 호출합니다. 호출되고있는 m()의 구현을 절대로 정의하지 않았으므로 예상치 못한 결과가 발생할 수 있습니다. 이 때문에 단일 유형의 구현 만 허용하도록 설계가 선택되었습니다. – mikek
자바와 C#에서 * 금지되어 있다고 말하지는 않겠지 만, 그 언어로 구현되지 않았습니다 (mikek 주를 이유로) – Kris