前言:我们研究形式参数和返回值是,主要是研究它的引用类型,主要包括具体类,抽象类,接口,在学习过程中,不要认为是学习新的知识点,我们就把他当做是知识点的扩充,回想这三个类的特点,这样学起来就快一点。
主要研究引用类型:
一.形式参数问题:
1.类(普通类)2.抽象类
3.接口
1.形式参数是一个具体类 需要的是该类的对象
2.形式参数是一个抽象类 形式参数是一个抽象类:此时需要的是该抽象类的子类对象 (抽象类多态...)
3.形式参数是一个接口 形式参数是一个接口:此时需要的是该接口的子实现类
注释,三个类在形式上虽然有所不同,但在调用的方法上套路进本一样,待会我会举例一个抽象类的形式参数方法,其他两个也能迎刃而解。
/**形式参数是有一个抽象类
* @author 田伟
*
*/
abstract class Person{
public void teach() {
System.out.println("今天天气不错,适合踢球");
}
}
class PersonDome{
public void method(Person p) {
p.teach();
}
}
class Student1 extends Person{
}
public class TeacherText {
public static void main(String[] args) {
// 需要调用这个抽象类中的方法,teach
// PersonDome p1=new PersonDome();
Person p=new Student1();
// p1.method(p);
new PersonDome().method(p);
}
}
二.返回值问题:
1.类(普通类)2.抽象类
3.接口
1.返回值是一个具体类 需要的是该类的对象
2.返回值是一个抽象类 那么返回需要的结果是需要当前抽象类的子类对象 抽象类多态
3.返回值是一个接口 那么返回需要的结果是需要当前接口的子实现类
注释:同样,要知道这三个类的特点,顺理成章,只要会一个其他三个方式基本上一样
/**返回值是抽象类的话
* @author 田伟
*
*/
abstract class Person2{
public void show() {
System.out.println("yes");
}
}
class PersonDome2{
public Person2 method() {
return new Teacher2();
}
}
class Teacher2 extends Person2{
}
public class StudentText2 {
public static void main(String[] args) {
PersonDome2 pd=new PersonDome2();
Person2 p=pd.method();
p.show();
}
注释:在这里可以用匿名对象链式编写,切记不要多用,非常占内存,只能用一次,能不用尽量别用。