目录
最近在看接口这一块的时候,我发现一个问题,java已经规定了一个class可以implements多个接口,那么我提出以下几个问题。
1.不同接口里面的重名的方法应该怎么处理?
先看一个例子:
public interface InterfaceA {
void method();
void methodA();
}
public interface InterfaceB {
void method();
void methodB();
}
public class Subject implements InterfaceA, InterfaceB {
@Override
public void method() {
}
@Override
public void methodB() {
}
@Override
public void methodA() {
}
}
那么问题来了,上例中method到底是哪个接口的方法?答案是它是两个接口的参数。如果你用InterfaceA去接收实例化的Subject对象的时候,它访问到的就是InterfaceA的method方法,对于InterfaceB同样的道理。如果用Subject去接收的时候,它默认的是InterfaceA的方法。
2.不同接口的方法怎么访问。
如下例所示:
interface Person
{
void run();
String getName();
}
interface Hello
{
void hello();
}
class Student implements Person,Hello
{
private String name;
public Student(String name)
{
this.name = name;
}
@Override
public void run()
{
System.out.println(this.name+"run");
}
@Override
public String getName()
{
return this.name;
}
@Override
public void hello()
{
System.out.println("hello "+this.name);
}
}
public class Test {
public static void main(String args[]){
//能访问到所有接口的方法
Student p = new Student("*** ");
p.run();
p.hello();
// p1只能访问到接口Person里面的方法
Person p1 = new Student("*** ");
//p2只能访问到接口Hello里面的参数
Hello p2 = ew Student("*** ");
}
}
接收实例化的类型不同,能访问到的方法也是不同的。