《java入门第一季》之面向对象(形式参数和返回值问题的深入研究2)
形式参数是引用类型 抽象类:
/* 形式参数: 引用类型 抽象类:需要的是该抽象类的子类对象 */ 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("----------------"); } }