我是这个概念的新手,我知道界面和抽象的属性。 当我向朋友解释这个概念时,他们让我在界面内创建抽象类。
请告诉我,是否可以在界面内创建抽象类。 我用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();
}
}
答案 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();
}
}