抽象类和接口作为形参问题

 1 /*
 2     形式参数: 4         引用类型
 5             类名:需要的是该类的对象
 6             抽象类:需要的是该抽象的类子类对象
 7             接口:
 8 */
 9 abstract class Person {
10     public abstract void study();
11 }
12 
13 class PersonDemo {
14     public void method(Person p) {//p; p = new Student();  Person p = new Student(); //多态
15         p.study();
16     }
17 }
18 
19 //定义一个具体的学生类
20 class Student extends Person {
21     public void study() {
22         System.out.println("Good Good Study,Day Day Up");
23     }
24 }
25 
26 class PersonTest {
27     public static void main(String[] args) {
28         //目前是没有办法的使用的
29         //因为抽象类没有对应的具体类
30         //那么,我们就应该先定义一个具体类
31         //需求:我要使用PersonDemo类中的method()方法
32         PersonDemo pd = new PersonDemo();
33         Person p = new Student();
34         pd.method(p);
35     }
36 }

抽象类作为参数类型

接口作为参数类型

 1 /*
 2     形式参数:
 3         基本类型
 4         引用类型
 5             类名:需要的是该类的对象
 6             抽象类:需要的是该抽象的类子类对象
 7             接口:需要的是该接口的实现类对象
 8 */
 9 //定义一个爱好的接口
10 interface Love {
11     public abstract void love();
12 }
13 
14 class LoveDemo {
15     public void method(Love l) { //l; l = new Teacher();  Love l = new Teacher(); 多态
16         l.love();
17     }
18 }
19 
20 //定义具体类实现接口
21 class Teacher implements Love {
22     public void love() {
23         System.out.println("老师爱学生,爱Java,爱林青霞");
24     }
25 }
26 
27 class TeacherTest {
28     public static void main(String[] args) {
29         //需求:我要测试LoveDemo类中的love()方法
30         LoveDemo ld = new LoveDemo();
31         Love l = new Teacher();
32         ld.method(l);
33     }
34 }
原文地址:https://www.cnblogs.com/jiangjianzhu/p/5776098.html