Java 是否可以在没有抽象方法的情况下执行接口?
当程序执行时,如果它在接口方法和嵌套接口方法中进行注释,则会执行该程序。 所以,它是如何执行流程的。 它是否作为默认方法Java 是否可以在没有抽象方法的情况下执行接口?,java,Java,当程序执行时,如果它在接口方法和嵌套接口方法中进行注释,则会执行该程序。 所以,它是如何执行流程的。 它是否作为默认方法 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 prosessi
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方法让您首先整理和更正代码,使其可读:
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();
}
}
我认为你的困惑在于,你认为It2中的m1方法和演示中的m1方法之间存在某种关系
事实上没有关系
演示类实现的是It1而不是It2。因此,Demo::m2是It1::m2的实现,但是Demo::m1没有实现任何接口方法
因此,当您注释掉It2中m1的声明时,它没有任何区别
演示这一点的一种方法是添加@Override注释:
@Override
public void m1() {
System.out.println("m1 method");
}
@Override
public void m2() {
System.out.println("m2 method");
}
编译器将对m1方法进行编译,说明它不会重写或实现任何内容。m2不会有编译错误
所以,它是如何执行流程的。它是否作为默认方法
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方法,这就是执行的方法。这个问题几乎是无法解决的,我认为它应该基于这样的理由关闭。