簡體   English   中英

我們可以在java的接口中定義抽象類嗎?

[英]can we define abstract class inside the interface in java?

我是這個概念的新手,我知道接口和抽象的屬性。 當我向我的朋友解釋這個概念時,他們要求我在接口內部創建抽象類。

請告訴我,是否可以在接口內創建抽象類。 我用谷歌搜索,但找不到我的問題的確切答案。

我嘗試了下面的代碼,但我不知道如何調用 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();
}
}

這樣的事情不是更好嗎?

interface Student {
    public abstract void sayHi();
}

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

是的你可以。 在下面的示例中,我使用了匿名類,但您也可以使用 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();
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM