形式參數問題
數據類型:
基本類型:byte,short,int,long,float,double,char,boolean
引用類型:類,接口,數組
形式參數:
基本類型:要的是該基本類型的數據值。
引用類型:要的是該引用類型的對象。
A:數組 要的是該數據類型數組的對象。(地址值)
public static void main(String[] args) { //在這里我們調用我們剛剛創建的數組遍歷的方法 //A:數組 要的是該數據類型數組的對象。(地址值) //創建一個數組 int[] arr = {1,2,3}; printArr(arr); } //A:數組 要的是該數據類型數組的對象。(地址值) //寫一個方法是一個數組遍歷的方法 public static void printArr(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } }
B:類 要的是該類或者其子類的對象。(地址值)
class Person{ public void show(){ System.out.println("person的show方法"); } } class Man extends Person{ public void function(){ System.out.println("Man的function方法"); } } class PersonDemo{ //提供一個方法,這個方法的參數是Person public void method(Person p){//Person p = new Person(); //當傳遞子類對象的時候,Person p = new Man();,這個是以多態的方式進行傳參 p.show();//p.show(); } } public class ArgsDemo2 { public static void main(String[] args) { //想要調用PersonDemo這個類中的method方法 PersonDemo pd = new PersonDemo(); //Person p = new Person(); Man m = new Man(); pd.method(m); } }
C:抽象類 要的是該抽象類的子類對象。(地址值)
abstract class Animal{ public abstract void eat(); } //創建一個Animal類的子類 class Dog extends Animal{ public void eat() { System.out.println("狗愛啃骨頭"); } } class AnimalDemo{ public void method(Animal a){//Aanimal a = new Dog();多態的方式進行傳參 //注意:如果一個形式參數類型是一個抽象類的話,本質上要的是這個抽象類的子類對象 a.eat(); } } public class ArgsDemo3 { public static void main(String[] args) { //需要調用AnilaDemo這個類中的method這個方法 AnimalDemo ad = new AnimalDemo(); Animal a = new Dog(); ad.method(a); } }
D:接口 要的是該接口的實現類對象。(地址值)
interface Person2{ public abstract void eat(); } class Women implements Person2{ public void eat() { System.out.println("民以食為天"); } } class Person2Demo{ public void method(Person2 p){//Perosn2 p = new Women();接口多態的方式進行傳參 //注意:如果一個方法的形式參數是一個接口類型的話,本質上需要的是這個接口的實現類對象,其實就是這個對象的地址值 p.eat(); } } public class ArgsDemo4 { public static void main(String[] args) { //調用Peros2Demo中的method方法 Person2Demo pd = new Person2Demo(); Person2 p = new Women(); pd.method(p); } }
返回值問題
返回值:
基本類型:byte,short,int,long,float,double,char,boolean
引用類型:類,接口,數組
返回值之基本類型:
基本類型:返回的是該基本類型的數據值。
案例:創建一個加法的方法,返回值就是基本類型的具體的指
返回值之引用類型:
返回值是類名:其實返回的是該類對象或者其子類對象。(地址值)如下
1 class Person{ 2 public void show(){ 3 System.out.println("perosn的show方法"); 4 } 5 } 6 7 class Student extends Person{ 8 public void function(){ 9 System.out.println("Student的function方法"); 10 } 11 } 12 13 class PersonDemo{ 14 //有一個方法,方法的返回值就是一個Person類型 15 public Person getPerson(){//Person p = new Person(); 16 //返回值類型如果是一個類名:本質上需要的是這個類或者這個類的子類對象 17 //Person p = new Person(); 18 Student s = new Student();//Person p = new Student(); 19 return s; 20 } 21 22 } 23 24 public class ReturnDemo2 { 25 public static void main(String[] args) { 26 //調用PersonDemo這個類中的getPerson()方法 27 /*PersonDemo pd = new PersonDemo(); 28 Person p = pd.getPerson();//Person p = new Person() 29 p.show();*/ 30 31 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 }
返回值是抽象類名:要的是該抽象類的子類對象。(地址值)如下
1 abstract class Animal{ 2 public abstract void eat(); 3 } 4 5 class Dog extends Animal{ 6 public void eat() { 7 System.out.println("狗就是愛吃骨頭"); 8 } 9 } 10 11 class AnimalDemo{ 12 //提供以一個方法,這個方法的返回值類型就是一個抽象類名 13 public Animal getAnimal(){//Animal a = new Dog(); 14 //注意:返回值類型是一個抽象類名的話:本質上需要的是這個抽象類的子類對象 15 //Animal a = new Dog(); 16 Dog a = new Dog(); 17 return a; 18 } 19 20 } 21 22 23 public class ReturnDemo3 { 24 public static void main(String[] args) { 25 //在這里調用ANimalDemo中的getAnimal的方法 26 AnimalDemo ad = new AnimalDemo(); 27 Animal a = ad.getAnimal();//Animal a = new Dog(); 28 a.eat(); 29 } 30 31 }
返回值是接口名:要的是該接口的實現類對象。(地址值)如下
interface Person2{ public abstract void eat(); } //創建一個類實現上面的接口 class Man implements Person2{ @Override public void eat() { System.out.println("我愛吃泡饃"); } } class Person2Demo{ //提供一個方法,該方法的返回值是一個接口類型 //注意:如果一個方法的返回值是接口類型的話,本質上需要的是該接口的實現類對象 public Person2 getPerson2(){//Person2 p = new Man(); Person2 p = new Man(); return p; } } public class ReturnDemo4 { public static void main(String[] args) { //調用Person2Demo中的getPersaon2() Person2Demo pd = new Person2Demo(); Person2 p = pd.getPerson2();//Person2 p = new Man();,接口多態 p.eat(); } }