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方法,这就是执行的方法。这个问题几乎是无法解决的,我认为它应该基于这样的理由关闭。