我正在上课
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 ?
}
}
是否可以使用接口类型访问类变量?
答案 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
}
}
希望这对您有帮助...