使用接口类型访问类变量

时间:2019-04-17 14:01:56

标签: java interface

我正在上课

class MyClass implements Intrfc {

String pickmeUp = "Its Me";

public static void main(String[] args){

Intrfc ob = new MyClass();
ob.pickmeUp;  ---> How can I access this way ?

  }

}

是否可以使用接口类型访问类变量?

4 个答案:

答案 0 :(得分:3)

  

是否可以使用接口类型访问类变量?

不。这就是界面的重点。

是的,接口只能为您提供行为(方法),而不是“状态”(变量/字段)。 Java就是这样。

当然,您始终可以使用instanceof来检查 actual 对象是否具有某些特定类型,然后 cast 到该类型。但是,正如所说的那样,会破坏使用接口的目的!

答案 1 :(得分:2)

不,您不能使用接口类型访问类变量,但是接口可以定义可以访问该变量的方法。

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();

    }

}

答案 2 :(得分:1)

在此定义中:

class MyClass implements Intrfc {
    String pickmeUp = "Its Me";
}

字段pickmeUp甚至不是Intrfc界面的成员,因此仅使用该界面就无法实现。 pickmeUp是具体类的成员-MyClass

答案 3 :(得分:0)

如果要通过接口的对象使用类的方法,可以按以下步骤进行操作:

//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


    }
}

希望这对您有帮助...