有个类C 实现了接口A和B 如果我是用A a = new C();来构造C 那这个实例a中会不会有B接口的方法 谢谢如题

2025-02-28 03:27:27
推荐回答(2个)
回答1:

A a = new C(); a中不会有接口B的方法,但实际的new C()会有B接口的方法,用a来引用new C(); 不会有接口B的方法. 如果C c = new C(); c中有接口B的方法 此时如果A a = c;用a访问不会有接口B的方法 用哪个父类(或接口)看待子类(或接口的实现类)的实例(对象) 就只能看到父类的方法 如上述A a = new C(); C实现了A,那站在A的角度看待new C() new C() 就是一个A的实例,当然只能调用A的方法了 另外,如果子类中有重写父类的方法 父类的引用指向子类的实例(对象)的时候 当调用父类中某个方法(这个方法在子类中被重写override) 那么会调用子类重写的方法; 这种情况下,依然符合上面所说. 站在谁的角度看new出来的对象,那它就是谁 只能调用这个角度看待时的访法;

回答2:

不可以调用B的方法,因为你已经把他定义为A了,那么C里面有关B的东西都无法使用。