類名、抽象類名、介面作為形式參數
它們都是引用類型。
抽象類、介面都不能實例化。
- 類名作形參:需要的是
該類的對象
- 抽象類名作形參:需要的是該抽象類的
子類對象
(抽象類多態) - 介面作形參:需要的是該介面的
實現類對象
(介面多態)
1、類名作形參
class Student {
public void study() {
System.out.println("Good Good Study,Day Day Up");
}
}
class StudentDemo {
public void method(Student s) { //ss; ss = new Student(); Student s = new Student();
s.study();
}
}
class StudentTest {
public static void main(String[] args) {
//需求:我要測試Student類的study()方法
Student s = new Student();
s.study();
System.out.println("----------------");
//需求2:我要測試StudentDemo類中的method()方法
StudentDemo sd = new StudentDemo();
Student ss = new Student();
sd.method(ss);
System.out.println("----------------");
//匿名對象用法
new StudentDemo().method(new Student());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2、抽象類名作形參
abstract class Person {
public abstract void study();
}
class PersonDemo {
public void method(Person p) {//p; p = new Student(); Person p = new Student(); //多態
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();
Person p = new Student();
pd.method(p);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
3、介面作形式參數
interface Love{
public abstract void love();
}
class LoveDemo{
public void method(Love l){//l= new Teacher(); Love l= new Teacher(); 多態
l.love();
}
}
//定義具體類實現介面
class Teacher implements Love{
public void love(){
System.out.println("老師愛下棋");
}
}
class TeacherTest {
public static void main(String[] args) {
//需求:我要測試LoveDemo中的love()方法
LoveDemo ld= new LoveDemo();
Love l= new Teacher();
ld.method(l);
}
}
TAG:程序員小新人學習 |