以多种方式访问​​接口的使用?

时间:2015-05-11 04:24:54

标签: java interface

我正在学习java中的界面,而我在我的子类主要方法中访问它我可以通过三种方式访问​​这些学习者的区别是什么可以帮助这个

public interface interfa
{
    void educationloan();
    abstract void homeloan();
    static int i = 10;;

}
public class testinter  implements interfa {

    public static void main(String args[])
    {

        System.out.println("Sub class access a interface by implement");

        testinter t = new testinter();
        t.miniloan();
        t.educationloan();
        t.homeloan();

        System.out.println("Super class access a only interface in sub class");

        interfa a = new testinter();
        a.educationloan();
        //a.miniloan();
        a.homeloan();

        System.out.println("Annomys class access a only interface in sub class");

        interfa xx = new interfa() {

            @Override
            public void homeloan() {
            }
            @Override
            public void educationloan() {
                // TODO Auto-generated method stub
            }
        };


        xx.educationloan();
        xx.homeloan();

    }
}

这里我的问题是哪个人可以在哪种情况下使用?有什么区别???

2 个答案:

答案 0 :(得分:1)

首先,由于您没有在子类中实现接口方法,因此您将获得编译时错误。

 testinter t = new testinter();
        t.miniloan(); 
        t.educationloan(); // these methods should be initialized 
        t.homeloan();

现在关于你的接口实现方式:

  1. testinter t = new testinter();
  2. t是子类的一个实例&可以像常规类对象一样使用。

    1. interfa a = new testinter();
    2. 使用此方法的好处是,您已在代码中使用了a n次参考。在将来,您希望将接口的实现更改为interfa a = new AnotherTestinter();所有您需要做的就是更改实现,不会更改引用。这是松散耦合,否则您必须在代码中的任何位置更改引用a。这种方法通常称为编程到接口。

      1. 使用anonymous

        interfa xx = new interfa(){             @覆盖         public void homeloan(){         }         @覆盖         public void educationloan(){             // TODO自动生成的方法存根         }     };

      2. 匿名类使您可以使代码更简洁。它们使您能够同时声明和实例化一个类。他们就像当地的班级,除了他们没有名字。如果您只需要使用本地类一次,请使用它们。 因此,执行此操作interfa xx = new interfa() {可帮助您在同一位置定义方法educationloan() homeloan()

答案 1 :(得分:0)

  1. t itselft是子类的实例。它可以像其他类对象一样正常使用
  2. t是interfa的一个实例。这里可以在需要子类或父类的两种情况下使用。
  3. 在此实现中,您必须以自己的方式实现接口的方法。您可以在此处实现不同的内容,而不是使用默认实现。
  4. N.B。我忽略了一件事,你将得到一个编译错误,因为你没有在子类中实现interfa的方法