形式参数是引用类型 抽象类:
/*
形式参数:
引用类型
抽象类:需要的是该抽象类的子类对象
*/
abstract class Person {
public abstract void study();
}
class PersonDemo {
public void method(Person p) {
p.study();//如果形参是一个抽象类,则需要传递的实际参数应该是该抽象类的子类的对象。
}
}
//定义一个具体的学生类
class Student extends Person {
public void study() {
System.out.println("Good Good Study,Day Day Up");
}
}
class PersonTest {
public static void main(String[] args) {
//需求:(要使用PersonDemo类中的method()方法)
PersonDemo pd = new PersonDemo();
Student s = new Student();
pd.method(s);//传递的实际参数应该是该抽象类的子类的(对象)
System.out.println("----------------");
//方法三:使用多态也是可以的,只要保证队形是实现了抽象类的子类对象就可以了
Person p = new Student();
p.study();
pd.method(p);
}
}
返回值类型是引用类型 : 抽象类
/*
返回值类型
引用类型:
抽象类:返回的是该抽象类的子类对象
*/
abstract class Person {
public abstract void study();
}
class PersonDemo {
public Person getPerson() {
return new Student();//匿名对象
}
}
class Student extends Person {
public void study() {
System.out.println("Good Good Study,Day Day Up");
}
}
class PersonTest2 {
public static void main(String[] args) {
//需求:测试Person类中的study()方法
Person p1 = new Student();//多态的方式
p1.study();
System.out.println("----------------");
Student s = new Student();//自己类对象方式
s.study();
System.out.println("----------------");
PersonDemo pd = new PersonDemo();
Person p = pd.getPerson(); //使用了返回值类型的方式,返回值类型是个person类型,所以用person接收。总体方式还是多态。
p.study();
System.out.println("----------------");
}
}