publicclass A {
publicA(){}
publicvoidshow(){
System.out.println("A");
}
}
publicclass B {
publicvoidshow(A a) {
a.show;
}
public A getA(){
A a = new A();
return a;
}
}
publicclass Test{
publicstaticvoidmain(String[] args) {
B b = new B();
A a = b.getA();
b.show(a);
}
}
抽象类名作为方法参数和返回值
抽象类名作为参数:需要的是该抽象类的非抽象子类对象作为实际参数
抽象类名作为返回值:返回的是该抽象类的子类对象
publicabstractclassA {publicA(){}
publicabstractvoidshow();
}
publicclassBextendsA {publicB(){}
publicvoidshow() {
System.out.println("B");
}
public A getA() {
returnnew B();
}
publicvoidshow2(A a) {
a.show();
}
}
publicclassTest {publicstaticvoidmain(String[] args) {
B b = new B();
A a = b.getA();
b.show3(a);
}
}
接口作为方法参数和返回值
接口名作为参数:需要的是该接口的实现类对象作为实际参数
接口名作为返回值:返回的是该接口的实现类对象
interface A {
publicabstractvoidshow();
}
publicclassBimplementsA {publicB(){}
publicvoidshow () {
System.out.println("show B");
}
public A getA() {
returnnew B();
}
publicvoidshow2(A a) {
a.show();
}
}
publicclassTest {publicstaticvoidmain(String[] args) {
B b = new B();
A a = b.getA();
b.show2(a);
}
}
形参和返回值问题类名作为方法参数和返回值类名作为参数:需要的是该类的对象作为实际参数类名作为返回值:返回的是该类的对象public class A { public A(){} public void show(){ System.out.println("A"); }}public class B { public ...