程序执行时,如果在接口方法和嵌套接口方法中添加注释,则将执行。 因此,它是如何执行过程的。 它是默认方法吗?
interface it2
{
//void m1(); with this comment program is executing so, how it is
prosessing
interface it1
{
//void m2();with this comment also program is executing so, how it is
prosessing
}
};
class Demo implements it2.it1
{
void m1()
{
System.out.println("m1 method");
}
public void m2()
{
System.out.println("m2 method");
}
public static void main(String[] args)
{
Demo t= new Demo();
t.m1();
t.m2();
}
}
输出- m1方法 m2方法
答案 0 :(得分:1)
首先整理一下并更正您的代码,以使其易于阅读:
public interface It2 {
void m1();
public interface It1 {
void m2();
}
}
public class Demo implements It2.It1 {
public void m1() {
System.out.println("m1 method");
}
public void m2() {
System.out.println("m2 method");
}
public static void main(String[] args) {
Demo t = new Demo();
t.m1();
t.m2();
}
}
我认为您的困惑是,您认为m1
中的It2
方法与m1
中的Demo
方法之间存在某种关系。
实际上没有关系。
Demo
类正在实现It1
而不是It2
。因此Demo::m2
是It1::m2
的实现,但是Demo::m1
没有实现任何接口方法。
因此,当您在m1
中注释掉It2
的声明时,没有什么区别。
一种证明这一点的方法是添加@Override
批注:
@Override
public void m1() {
System.out.println("m1 method");
}
@Override
public void m2() {
System.out.println("m2 method");
}
编译器将对m1
方法进行编译,表示该方法不会覆盖或实现任何内容。 m2
不会有编译错误。
因此,它是如何执行过程的。它是默认方法吗?
不。这里没有默认方法。