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
}
}
希望这可以帮助...
添加回答
举报