类实例化Java

类实例化Java,java,class,instantiation,Java,Class,Instantiation,为什么我们可以使用接口I来实例化类A的对象?我们不应该使用obj=newa()吗 谢谢 如何使用“I”类型的引用变量引用“A”类型的对象 因为A实现了I(逐字引用代码) A执行接口I指定的所有操作,因此它与引用的声明类型I兼容。通过接口和继承,对象可以有多种类型。这是因为A是类型I,因为它实现了I接口。你能澄清问题/问题是什么吗?那么我是否表现为A的超类(父类)? I i = new A(); interface I { void f(); void g(); } class

为什么我们可以使用接口I来实例化类A的对象?我们不应该使用obj=newa()吗

谢谢

如何使用“I”类型的引用变量引用“A”类型的对象

因为
A实现了I
(逐字引用代码)


A
执行接口
I
指定的所有操作,因此它与引用的声明类型
I
兼容。通过接口和继承,对象可以有多种类型。

这是因为A是类型I,因为它实现了I接口。

你能澄清问题/问题是什么吗?那么我是否表现为A的超类(父类)?
I i = new A();
interface I {
    void f();
    void g();
}

class A implements I {
    public void f() { System.out.println("A: doing f()"); }
    public void g() { System.out.println("A: doing g()"); }
}

class B implements I {
    public void f() { System.out.println("B: doing f()"); }
    public void g() { System.out.println("B: doing g()"); }
}

class C implements I {
// delegation
    I i = new A();

    public void f() { i.f(); }
    public void g() { i.g(); }

    // normal attributes
    public void toA() { i = new A(); }
    public void toB() { i = new B(); }
}