Java中的 接口Interface到底能不能new?
2019-02-17 本文已影响52人
小星star
-
由于在 发现匿名类的时候,发现可以直接new(),但是当初老师说Interface不可以new()
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Bundle bundle = new Bundle(); Intent intent = new Intent(MainActivity.this, NoteNewActivity.class); intent.putExtra("groupName",groupName); intent.putExtra("NewOrEdit","New"); startActivity(intent); } });
这个我们很熟悉,新建匿名类,这样做其实没有new 一个 接口,而是new 了一个没有名字的 类A,A implements 了 Listener,然后实现了 onClick(),他仅仅是简写了而已,其实并没有new 接口
-
private Map<String, Status> closed = new HashMap<String,Status>();
这里Map虽然是一个接口,但是我们并没有 new Map(),而是new 了 一个HashMap(),closed只是一个引用对象而已
用到了 面对对象的多态,父类可以引用子类对象Map是一个接口,里面写了一些规范,我们可以只熟悉 Map里面 到底有那些方法即可,而不必关心HashMap()是怎么实现的,里面包含了哪些方法。这样降低了我们的学习成本。
使用接口可以方便的 让我们操作。 -
java的实现类可以添加接口外的方法吗?
可以添加,但是在声明对象时只有声明本身类才能调用到。
例如:接口A,有ab两个方法,类S实现A,并增加了方法c。
声明: A s=new S();则s只能调用ab,不能调c。
声明S s=new S();s可以调用abc方法。