当我在子类主要方法中访问接口时,我正在学习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();
}
}
我的问题来了,哪种人可以在哪种情况下使用,有什么区别???
最佳答案
首先,您会在未实现子类中的接口方法的情况下获得大量的编译时错误。
testinter t = new testinter();
t.miniloan();
t.educationloan(); // these methods should be initialized
t.homeloan();
现在,关于您的界面实现方式:
testinter t = new testinter();
t是子类的实例,可以像常规类对象一样使用。
interfa a = new testinter();
使用这种方法的好处是,您在代码中使用了n次引用
a
,将来您想将接口的实现更改为interfa a = new AnotherTestinter();
,您所要做的就是更改引用的实现。被改变。这是松散耦合,否则您必须在代码中的任何地方更改引用a
。这种方法通常称为接口编程。使用anonymous类
interfa xx =新的interfa(){
@Override
公共无效的homeloan(){
}
@Override
公共无效的Educationloan(){
// TODO自动生成的方法存根
}
};
匿名类使您可以使代码更简洁。它们使您可以同时声明和实例化一个类。它们就像本地类,只是它们没有名称。如果只需要使用一次本地类,则使用它们。
因此,执行
interfa xx = new interfa() {
可帮助您在同一位置定义方法educationloan() homeloan()
。