class Person{publicvoid show(){System.out.println("person的show方法");}
}class Man extends Person{publicvoid function(){System.out.println("Man的function方法");}
}class PersonDemo{//提供一個方法,這個方法的參數是Personpublicvoid method(Person p){//Person p = new Person();//當傳遞子類對象的時候,Person p = new Man();,這個是以多態的方式進行傳參p.show();//p.show(); }
}publicclass ArgsDemo2 {publicstaticvoid main(String[] args) {//想要調用PersonDemo這個類中的method方法PersonDemo pd = new PersonDemo();//Person p = new Person();Man m = new Man();pd.method(m);}}
?
C:抽象類 要的是該抽象類的子類對象。(地址值)
abstractclass Animal{publicabstractvoid eat();
}//創建一個Animal類的子類class Dog extends Animal{publicvoid eat() {System.out.println("狗愛啃骨頭");}}class AnimalDemo{publicvoid method(Animal a){//Aanimal a = new Dog();多態的方式進行傳參//注意:如果一個形式參數類型是一個抽象類的話,本質上要的是這個抽象類的子類對象 a.eat();}
}publicclass ArgsDemo3 {publicstaticvoid main(String[] args) {//需要調用AnilaDemo這個類中的method這個方法AnimalDemo ad = new AnimalDemo();Animal a = new Dog();ad.method(a);}}
?
D:接口 要的是該接口的實現類對象。(地址值)
interface Person2{publicabstractvoid eat();
}class Women implements Person2{publicvoid eat() {System.out.println("民以食為天");}
}class Person2Demo{publicvoid method(Person2 p){//Perosn2 p = new Women();接口多態的方式進行傳參//注意:如果一個方法的形式參數是一個接口類型的話,本質上需要的是這個接口的實現類對象,其實就是這個對象的地址值 p.eat();}
}publicclass ArgsDemo4 {publicstaticvoid main(String[] args) {//調用Peros2Demo中的method方法Person2Demo pd = new Person2Demo();Person2 p = new Women();pd.method(p);}}
1class Person{
2publicvoid show(){
3 System.out.println("perosn的show方法");
4 }
5}
6 7class Student extends Person{
8publicvoid function(){
9 System.out.println("Student的function方法");
10 }
11}
1213class PersonDemo{
14//有一個方法,方法的返回值就是一個Person類型15public Person getPerson(){//Person p = new Person();
16//返回值類型如果是一個類名:本質上需要的是這個類或者這個類的子類對象
17//Person p = new Person();18 Student s = new Student();//Person p = new Student();19return s;
20 }
2122}
2324publicclass ReturnDemo2 {
25publicstaticvoid main(String[] args) {
26//調用PersonDemo這個類中的getPerson()方法27/*PersonDemo pd = new PersonDemo();
28 Person p = pd.getPerson();//Person p = new Person()
29 p.show();*/3031 PersonDemo pd = new PersonDemo();
32 Person p = pd.getPerson();//Person p = new Studnet();,多態33 p.show();
34//p.function();35 Student s = (Student)p;
36 s.function();
37 }
?
返回值是抽象類名:要的是該抽象類的子類對象。(地址值)如下
1abstractclass Animal{
2publicabstractvoid eat();
3}
4 5class Dog extends Animal{
6publicvoid eat() {
7 System.out.println("狗就是愛吃骨頭");
8 }
9}
1011class AnimalDemo{
12//提供以一個方法,這個方法的返回值類型就是一個抽象類名13public Animal getAnimal(){//Animal a = new Dog();
14//注意:返回值類型是一個抽象類名的話:本質上需要的是這個抽象類的子類對象
15//Animal a = new Dog();16 Dog a = new Dog();
17return a;
18 }
1920}
212223publicclass ReturnDemo3 {
24publicstaticvoid main(String[] args) {
25//在這里調用ANimalDemo中的getAnimal的方法26 AnimalDemo ad = new AnimalDemo();
27 Animal a = ad.getAnimal();//Animal a = new Dog();28 a.eat();
29 }
3031 }
?
返回值是接口名:要的是該接口的實現類對象。(地址值)如下
interface Person2{publicabstractvoid eat();
}//創建一個類實現上面的接口class Man implements Person2{@Overridepublicvoid eat() {System.out.println("我愛吃泡饃");}
}class Person2Demo{//提供一個方法,該方法的返回值是一個接口類型//注意:如果一個方法的返回值是接口類型的話,本質上需要的是該接口的實現類對象public Person2 getPerson2(){//Person2 p = new Man();Person2 p = new Man();return p;}
}publicclass ReturnDemo4 {publicstaticvoid main(String[] args) {//調用Person2Demo中的getPersaon2()Person2Demo pd = new Person2Demo();Person2 p = pd.getPerson2();//Person2 p = new Man();,接口多態 p.eat();}}