我们可以在java中的接口内定义抽象类吗?

时间:2018-03-13 07:26:05

标签: java

我是这个概念的新手,我知道界面和抽象的属性。 当我向朋友解释这个概念时,他们让我在界面内创建抽象类。

请告诉我,是否可以在界面内创建抽象类。 我用Google搜索,但我无法找到问题的确切答案。

我尝试了以下代码,但我不知道如何调用AbstractMethod。

interface Student {

    public abstract class Subject {

        public void AbstractMethod(){
            System.out.println("hi");
        }
    }
}

class Data implements Student {

    public void ClassMethod() {
        System.out.println("method 2");
    }
}

public class NewClass {
public static void main(String[] args) {
    Data s=new Data(); 
 Student.Subject obj=new Student.Subject();// compiler error
    s.ClassMethod();
}
}

2 个答案:

答案 0 :(得分:1)

这样的事情会不会更好?

interface Student {
    public abstract void sayHi();
}

class Data implements Student {
    @Override
    public void sayHi() {
        System.out.println("method 2");
    }
}

答案 1 :(得分:0)

是的,可以。在下面的示例中,我使用了匿名类,但您也可以使用Lambda表达式

interface Student {

    public abstract class Subject {

        public abstract void AbstractMethod();
        public void show(){
            System.out.println("Show Method");
        }
    }
}

class Data implements Student {

    public void ClassMethod() {
        System.out.println("method 2");
    }
}

public class NewClass {
public static void main(String[] args) {
    Data s=new Data(); 
 Student.Subject obj=new Student.Subject(){
     public void AbstractMethod(){
            System.out.println("hi");
        }
 };
 obj.show();
 obj.AbstractMethod();
 s.ClassMethod();
}
}