-2

定义了这样一个接口嘛

public interface A {
    int one=1;
       void b();
}
class C implements A{
        int two=2;
    public void b() {
        
        
        System.out .println("555");    
    }
}

然后然后

public class text {

    public static void main(String[] args) {
        A m=new C();
        m.b();
        System.out .println(m.two);
    }
}

问题改了一下下。。
打印语句那,m.two提示错误了,但是我用m.one是正确的,不是太懂,为什么可以调用class C的方法却调不了它的变量,希望有明确的解答,谢谢。还有就是为啥C m=new C();可以调m.two但是A m=new C();却不行。。

3 个回答
1

已采纳

这个和多态没有关系的, 你这个语句编译就过不了.

m是一个C的实例,C本身没有定义自己的属性,C实现了A,那么拥有了A的属性one.two是方法b中的一个局部变量.方法不是一个实体,没有办法调用他的属性.

此外,像楼上说的.类,方法,变量还是各自命名清晰好.

比如接口A,实现了A的类C,而C实现了具体的方法b.

虽然我也很不赞成把方法和类做同一个序列.用a,b,c.来表示...

1

two是局部变量,只能b方法访问。

1

有以下几个建议给你

  1. 先搞清楚多态是什么

clipboard.png
这样才能访问到他的变量

  1. 以后定义类的时候首字母尽量用大写,这样方便区分类和变量,你这代码让人看着心很累

撰写答案

推广链接