总结:引用类型---->数组,类,接口
形式参数是引用类型的时候:
如果是一个具体类名:要的是该类的对象或其子类对象
如果是一个抽象类:要的是该类的子类对象
如果是一个接口:要的是该接口的实现类
返回值类型是引用类型的时候:
如果是一个具体类名:返回的是该类的对象或其子类对象
如果是一个抽象类:返回的是该类的子类对象
如果是一个接口:返回的是该接口的实现类
例一:
class
Fu{
public
void
show(){
System.
out
.println(
"show fu"
);
}
}
//在这里如何补齐代码
class Zi extends Fu{
public void show(){//重写父类的方法
System. out.println( "show zi");
}
}
class
FuDemo{
public
void
textFu(Fu
f
){
f
.show();
}
}
public
class
FuText {
public
static
void
main(String[]
args
) {
FuDemo
fd
=
new
FuDemo();
//补齐代码要求在控制台上输出 show zi
Fu f=new Zi();//多态
fd.textFu(f);
}
}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/*
* 抽象类做为形式参数,实际要的是该类的子类对象
*/
例二:
abstract
class
Fu{
public
abstract
void
show();
}
//在这里如何补齐代码
class Zi extends Fu{
public void show(){
System. out.println( "show");
}
}
class
FuDemo{
//这里传的是抽象类,要的肯定是该类的子类对象
public
void
textFu(Fu
f
){
f
.show();
}
}
public
class
FuText {
public
static
void
main(String[]
args
) {
FuDemo
fd
=
new
FuDemo();
//补齐代码要求在控制台上输出 show
Fu
f = new Zi();
fd.textFu(f);
}
}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
/*
* 接口做为形式参数,实际要的是该接口的子类
*/
例三:
interface
Fu{
public
abstract
void
show();
}
//在这里如何补齐代码
class Zi implements Fu{
public void show(){
System. out.println( "show zi");
}
}
class
FuDemo{
//这里传的是抽象类,要的肯定是该类的子类对象
public
void
textFu(Fu
f
){
f
.show();
}
}
public
class
FuText {
public
static
void
main(String[]
args
) {
FuDemo
fd
=
new
FuDemo();
//补齐代码要求在控制台上输出 show
Fu
f
=
new
Zi();
fd
.textFu(
f
);
}
}