4 回答

TA貢獻1951條經驗 獲得超3個贊
有沒有辦法使用接口類型訪問類變量?
不,這就是界面的全部意義所在。
是的,接口只給你行為(方法),而不是“狀態”(變量/字段)。這就是Java中的情況。
當然,您始終可以使用instanceof
來檢查實際對象是否屬于更具體的類型,然后強制轉換為該類型。但如前所述,這違背了使用接口的目的!

TA貢獻1942條經驗 獲得超3個贊
不,您不能使用接口類型訪問類變量,但接口可以定義可以訪問該變量的方法。
interface Intrfc {
public String getPickmeUp();
}
class MyClass implements Intrfc {
String pickmeUp = "Its Me";
public String getPickmeUp(){
return pickmeUp;
}
public static void main(String[] args){
Intrfc ob = new MyClass();
ob.getPickmeUp();
}
}

TA貢獻1893條經驗 獲得超10個贊
在這個定義中:
class MyClass implements Intrfc {
String pickmeUp = "Its Me";
}
該字段pickmeUp甚至不是Intrfc接口的成員,因此無法僅使用接口來訪問它。pickmeUp是具體類的成員 - MyClass.

TA貢獻1786條經驗 獲得超11個贊
如果你想通過接口的對象來使用類的方法,你可以這樣做:
//Interface:
public interface TestOne {
int a = 5;
void test();
static void testOne(){
System.out.println("Great!!!");
}
default void testTwo(){
System.out.println("Wow!!!");
}
}
//-------------------
//Class implementing it:
package SP;
public class TestInterfacesImp implements Test1, TestOne{
@Override
public void test() {
System.out.println("I Love java");
}
public void testM() {
System.out.println("I Love java too");
}
public static void main(String[] args) {
TestOne.testOne();
TestOne obj = new TestInterfacesImp();
obj.testTwo();
TestInterfacesImp objImp = new TestInterfacesImp();
objImp.test();
((TestInterfacesImp) obj).testM(); //Here casting is done we have casted to class type
}
}
希望這可以幫助...
添加回答
舉報