Pra*_*ant 3 java multiple-inheritance
public interface A {
class Aclass {
int constants = 100;
public void display()
{
System.out.println("Inside A");
}
}
public void display();
}
public interface B {
class Bclass {
int constants = 130;
public void display() {
System.out.println("Inside B");
}
}
public void display();
}
public class MultipleInheritance implements A, B {
@Override
public void display() {
A.Aclass a = new A.Aclass();
System.out.println(a.constants);
B.Bclass b = new B.Bclass();
System.out.println(b.constants);
}
public static void main(String args[]) {
new MultipleInheritance().display();
}
}
Run Code Online (Sandbox Code Playgroud)
虽然它是通过接口,而不是通过上下文中的具体类,你不继承任何东西,但仍然不是代码重用,即使保持内部类很难,但它仍然充当多重继承请用内存表示清除如果可能的话.
让我们回顾一下您在代码中实际拥有的内容.在这里,您声明接口A和嵌套类AClass:
public interface A {
class Aclass {
int constants = 100;
public void display()
{
System.out.println("Inside A");
}
}
public void display();
}
Run Code Online (Sandbox Code Playgroud)
在这里,您声明接口B和嵌套类Bclass:
public interface B {
class Bclass {
int constants = 130;
public void display() {
System.out.println("Inside B");
}
}
public void display();
}
Run Code Online (Sandbox Code Playgroud)
在这里你实例化Aclass:
A.Aclass a = new A.Aclass();
Run Code Online (Sandbox Code Playgroud)
在这里你实例化Bclass:
B.Bclass b = new B.Bclass();
Run Code Online (Sandbox Code Playgroud)
现在注意,Aclass并且Bclass是两个完全不相关的类.这两个共享的唯一常见超类型是Object.
显然,在您甚至没有尝试从两种类型继承的情况下,不会谈论多重继承.
在这里,您至少尝试涉及两种超类型:
public class MultipleInheritance implements A, B { ... }
Run Code Online (Sandbox Code Playgroud)
但是你从不在代码中涉及这种类型,它只是main方法的容器.这种类型在实现两个接口时,不会多次从它们继承:它继承了两种不同的类型(Aclass,Bclass).还要注意,即使它们具有相同的名称,仍然没有多重继承.只会发生命名冲突.
多重继承严格来说是方法实现的继承,显然你无法在Java中实现这一点.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |