总结:引用类型---->数组,类,接口
形式参数是引用类型的时候:
如果是一个具体类名:要的是该类的对象或其子类对象
如果是一个抽象类:要的是该类的子类对象
如果是一个接口:要的是该接口的实现类
返回值类型是引用类型的时候:
如果是一个具体类名:返回的是该类的对象或其子类对象
如果是一个抽象类:返回的是该类的子类对象
如果是一个接口:返回的是该接口的实现类
例一:
classFu{
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);
}
}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/*
* 抽象类做为形式参数,实际要的是该类的子类对象
*/
例二:
abstractclass
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);
}
}