方法的返回值类型和参数类型

方法的返回值
        基本数据类型:byte,short,int ,long,float,double,char,boolean
        
        引用数据类型:
            
            类:当类作为方法的返回值得的时候,实际上需要的是该类的对象
             

class Student3{
    public void study(){
        System.out.println("好好学习天天向上");
    }
}
class StudentDemo3{
    //今后你看到一个方法的返回值是一个类的类型的时候,
    //实际上返回的是该类对象的地址值。
    public Student3 fun(){
        Student3 s = new Student3();
        return s;
    }
}
public class StudentTest2 {
    public static void main(String[] args) {
        StudentDemo3 studentDemo3 = new StudentDemo3();
        Student3 s = studentDemo3.fun();
        s.study();
    }
}


            抽象类:当抽象类作为方法的返回值得时候,实际上需要的是该抽象类的子类对象的

                           地址值,
                    

abstract class Person3{
    public abstract void study();
}
class Doctor extends Person3{
    @Override
    public void study() {
        System.out.println("好好学习医术");
    }
}
class PersonDemo3{
    //今后当你看到一个方法的返回值是一个抽象类类型的时候
    //需要返回的是该抽象类的子类对象
    public Person3 fun(){
//        Person3 person3 = new Person3();
//        Person3 p = new Doctor();
//        return p;
        return new Doctor();
    }
}
public class PersonTest2 {
    public static void main(String[] args) {
        PersonDemo3 personDemo3 = new PersonDemo3();
        Person3 p = personDemo3.fun(); //Person3 p = new Doctor();
        p.study();
    }
}


            接口:当接口作为方法的返回值的时候,实际上需要的是实现该接口的类对象的地址值;
             

interface PlayGame3{
    public abstract void playLol();
}
class Teacher3 implements PlayGame3{

    @Override
    public void playLol() {
        System.out.println("打英雄联盟");
    }
}
class TeacherDemo3{
    //当接口作为返回值类型的时候,需要的是实现该接口的类的对象
    public PlayGame3 fun(){
        return new Teacher3();
    }
}
public class TeacherTest2 {
    public static void main(String[] args) {
//        TeacherDemo3 teacherDemo3 = new TeacherDemo3();
//        PlayGame3 pg3 = teacherDemo3.fun();
//        pg3.playLol();
        //链式编程(今后你们所学的spark,flink都是这样的写代码方式)
        //scala
        new TeacherDemo3().fun().playLol();
    }
}


            数组:当数组作为方法的返回值得时候,实际上需要的是数组的地址值;形式参数
       

方法的形式参数:

         基本数据类型:byte,short,int ,long,float,double,char,boolean
        
        引用数据类型:
            
            类:当类作为方法的形式参数的时候,实际上需要的是该类的对象
             

class Student{
    public void study(){
        System.out.println("好好学习天天向上");
    }
}

class StudentDemo{
    //但凡今后看到一个方法的参数是一个类的类型进行传参的时候
    //实际上穿传的是该类的对象的地址值
    public void fun(Student student){
        student.study();
    }
}

public class StudentTest {
    public static void main(String[] args) {
        StudentDemo studentDemo = new StudentDemo();
        Student student = new Student();
        studentDemo.fun(student);
    }
}


            抽象类:当抽象类作为方法的形式参数的时候,实际上需要的是该抽象类的子类实现

                       对象的地 址值,

abstract class Person {
    public abstract void study();
}
class Student2 extends Person{
    @Override
    public void study() {
        System.out.println("好好学习天天向上");
    }
}
class PersonDemo {
    //将来你看到当一个抽象类作为参数的类型的时候
    //实际上需要的时候该类子类实现对象的地址值,利用多态的形式创建
    public void fun(Person person) { //Person person = new Student2()
        person.study();
    }
}
public class PersonTest {
    public static void main(String[] args) {
        PersonDemo personDemo = new PersonDemo();
        //抽象类不能被实例化
//        Person person = new Person();
//        Person p = new Student2();
//        personDemo.fun(p);
        personDemo.fun(new Student2());
    }
}


            
            接口:当接口作为方法的形式参数的时候,实际上需要的是该接口的实现类对象的

                      地址值,利用接口多态的方式创建;

interface Person2 {
    public abstract void study();
}
class Teacher implements Person2{

    @Override
    public void study() {
        System.out.println("好好学习天天赚钱");
    }
}
class TeacherDemo{
    //今后你看到一个方法的参数类型是一个接口的时候,
    //实际上需要的是该接口的实现类对象的地址值,利用接口多态的方式创建
    public void fun(Person2 person2){
        person2.study();
    }
}
public class TeacherTest {
    public static void main(String[] args) {
        TeacherDemo teacherDemo = new TeacherDemo();
//        Person2 person2 = new Person2();
        Person2 p = new Teacher();
        teacherDemo.fun(p);
    }
}


             
            数组:当数组作为方法的形式参数的时候,实际上需要的是数组的地址值;

             

### Java 方法重载的关键要素 在 Java 中,方法重载的核心在于 **参数列表的不同**。具体来说,如果两个方法具有相同的名称,则它们可以通过以下条件实现重载: 1. 参数的数量不同。例如,一个方法接受单个 `int` 类型参数,而另一个方法接受两个 `int` 类型参数[^2]。 2. 参数类型不同。例如,一个方法接受 `String` 类型参数,而另一个方法接受 `Integer` 类型参数。 3. 参数的顺序不同(当涉及多种数据类型的组合时)。例如,一个方法的第一个参数是 `int` 而第二个参数是 `double`,而另一个方法则相反。 需要注意的是,返回值类型并不影响方法重载的判断标准。即使两个方法拥有完全相同的参数列表但返回不同类型的结果,这仍然不会构成合法的重载。 以下是展示方法重载的一个简单例子: ```java public class OverloadExample { public void display(int a) { System.out.println("Int parameter: " + a); } public void display(double b) { System.out.println("Double parameter: " + b); } public void display(String c) { System.out.println("String parameter: " + c); } } ``` 上述代码片段展示了通过改变参数类型来实现方法重载的方式。 另外值得注意的一点是,在讨论方法签名时,“变量名”的差异并不会成为区分方法重载的因素之一。也就是说,即便两段函数声明仅存在形参命名上的区别,也不会形成有效的重载关系[^1]。 综上所述,Java 方法重载的主要依据为 **参数列表** 的差异而非返回值类型或其他属性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值