接口实现类实例对象调用关系?
2018-05-24 21:43:19 0 举报
接口实现类实例对象调用关系?
作者其他创作
大纲/内容
结果验证
ma()方法需要传入类型为IB的数据
ib实例对象中的数据
ma in IAImplmb in IBImpl
public class IBImpl implements IB {\t//声明私有IA类型引用ia\tprivate IA ia;\tpublic void setIa(IA ia) {\t\tthis.ia = ia;\t}\t@Override\tpublic void mb() {\t\tSystem.out.println(\"mb in IBImpl\");\t}\tpublic void method() {\t\tia.ma(this);\t}}
5
8
private IA ia;\tpublic void setIa(IA ia) {\t\tthis.ia = ia;\t}\t@Override\tpublic void mb() {\t\tSystem.out.println(\"mb in IBImpl\");\t}\tpublic void method() {\t\tia.ma(this);\t}
传入的是IA类型的实现类IAImpl的实例引用(多态)
IA接口引用子类IAImpl对象.存储在ia在IAImpl中实现了接口方法ma(IB ib)这里参数为IB类型的ib方法输出了一行\"ma in IAImpl\
右边的代码实例被传入左边的IB类型数据中
1
@Override\tpublic void ma(IB ib) {\t\tSystem.out.println(\"ma in IAImpl\");\t\tib.mb();\t}
这里ib对象最终调用了method()方法.method方法中使用ia对象调用了ma()方法.传入了this值.而这时的this就是ib本身.而当时ia被传入赋值了.
4
2
接口IA实现类 IAImpl
接口IB
10
16. **写出下面代码的运行结果interface IA{void ma(IB ib);}interface IB{void mb();}class IAImpl implements IA{public void ma(IB ib){ System.out.println(“ma in IAImpl”);ib.mb();}}class IBImpl implements IB{private IA ia;public void setIa(IA ia){this.ia = ia;}public void mb(){System.out.println(“mb in IBImpl”);}public void method(){ia.ma(this);}}public class TestMain{public static void main(String args[]){IA ia = new IAImpl();IBImpl ib = new IBImpl();ib.setIa(ia);ib.method();}}
public interface IB {\t\tvoid mb();}
该行代码创建完毕.并没进行输出或方法调用等.
public class IAImpl implements IA {\t@Override\tpublic void ma(IB ib) {\t\tSystem.out.println(\"ma in IAImpl\");\t\tib.mb();\t}}
传入
method()中传入的this就是ib本身
接口IB实现类 IBImpl
public interface IA {\tvoid ma(IB ib);}
9
3
public class TestMain {\tpublic static void main(String[] args) {\t\t\t\tIA ia = new IAImpl();\t\tIBImpl ib = new IBImpl();\t\tib.setIa(ia);\t\tib.method();\t}}
7
程序输出
ia实例对象中的数据
6
该ia实例调用了ma()方法
接口IA
ib对象调用mb()方法.这是ib本身已经被传入ia对象中的ma(IB ib){ ... }方法.ib中的mb()方法输出:\"mb in IBImpl\"之后程序结束
0 条评论
下一页