Java:形式參數問題和返回值問題


形式參數問題
數據類型:
基本類型: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();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM